2011-12-14 50 views
1

我有一个宝石,我需要用我把它添加到我的Gemfile捆扎机+ Rails3.1:使用捆绑和负载路径

gem 'attr_encrypted', :git => "git://github.com/danpal/attr_encrypted.git" 

捆绑安装了捆绑从GitHub安装它从GitHub存储库安装宝石:

$bundle show attr_encrypted 
/Users/dani/.rvm/gems/[email protected]/bundler/gems/attr_encrypted-05bbe677eae6 

的问题是,RubyGems的不会看到它:

因为RubyGems的缺乏从混帐处理宝石的能力,一个从git仓库安装的y宝石 不会显示在gem列表中。然而,它们 将在运行Bundler.setup之后可用。

现在,如果我跑打捆/设置它的工作:

DANIELs-MacBook-Air-2:authy-SSO dani$ irb 
ruby-1.9.2-p290 :001 > require 'attr_encrypted' 
LoadError: no such file to load -- attr_encrypted 
    from /Users/dani/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/dani/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):1 
    from /Users/dani/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 
ruby-1.9.2-p290 :002 > require 'bundler/setup' 
=> true 
ruby-1.9.2-p290 :003 > require 'attr_encrypted' 
=> true 

的问题是,我在哪里添加此负载路径rails3.1让我从捆扎机得到所有的宝石都自动负载路径?

回答

2

Rails 3应用程序会在启动时自动加载打包程序,从而使所有的宝石可用于Rails的加载路径。需要加载打包程序的代码会在config/boot.rb文件中自动生成。您可以使用rails console启动导航控制台,并会看到attr_encrypted已被加载。

如果您需要使用不同的进程(如简单的ruby脚本,irb会话或rake任务),您可以使用bundle exec启动它,它将调整进程的负载路径,然后启动它。你可以使用它像bundle exec irb

你应该总是使用bundle exec开始打捆存在只有这样你确保正确的宝石和版本的使用和依赖的所有可用脚本。欲了解更多信息,请参阅bundle exec man page或一般bundler website

+0

+1内容翔实的答案!谢谢! – 2011-12-14 22:08:00