Bundler + Rails3.1: установка гемов из репозитория github с использованием пути компоновки и загрузки - PullRequest
1 голос
/ 15 декабря 2011

У меня есть Gem, который мне нужен, чтобы установить его с github с помощью bundler. Я добавил его в свой Gemfile

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

Bundle установил его:

$bundle show attr_encrypted
/Users/dani/.rvm/gems/ruby-1.9.2-p290@railsrc/bundler/gems/attr_encrypted-05bbe677eae6

Проблема в том, что rubygemsне увидит его:

Поскольку в Rubygems отсутствует возможность обрабатывать драгоценные камни из git, любые драгоценные камни, установленные из хранилища git, не будут отображаться в списке драгоценных камней.Однако они будут доступны после запуска Bundler.setup.

Теперь, если я запускаю 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, так что все гемы, которые я получаю от Bundler, автоматически попадают в путь загрузки?

1 Ответ

2 голосов
/ 15 декабря 2011

Приложения Rails 3 автоматически загружают упаковщик при запуске, что делает все гемы доступными для пути загрузки Rails.Необходимый код для загрузки компоновщика автоматически генерируется в вашем файле config/boot.rb.Вы можете запустить консоль rails, используя rails console, и увидите, что attr_encrypted уже загружено.

Если вам нужен другой процесс с адаптированным путем загрузки (например, простой скрипт ruby, сеанс irb или rakeзадача) вы можете запустить его с bundle exec, который адаптирует путь загрузки для процесса, а затем запустите его.Вы можете использовать его как bundle exec irb.

Вы должны всегда использовать bundle exec, чтобы запускать сценарии с представлением упаковщика, поскольку только так вы гарантируете, что используются правильные гемы и версии и всезависимости доступны.Для получения дополнительной информации, пожалуйста, обратитесь к справочной странице bundle exec man или, как правило, на сайте bundler .

...