Почему "установка комплекта" заканчивается в генераторе Rails?
Я пытаюсь создать собственный генератор для Rails 3.1. И я написал это:
module SomeGem
module Generators
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path('../templates', __FILE__)
desc "This adds devise"
def install
gem "devise"
run "bundle install"
end
end
end
end
Но когда я запускаю этот генератор (rails g somegem:install, в недавно созданном приложении rails), я получаю эту ошибку:
gemfile devise
run bundle install
Could not find gem 'devise (>= 0)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Мой генератор правильно добавляет Devise в Gemfile, но он не работает, когда запускает команду bundle install из генератора. Когда я запускаю "bundle install" из консоли, он устанавливает все гемы без каких-либо ошибок.
Почему это происходит?
Вот мой Gemfile после запуска 'rails g somegem: install' (я удалил комментарии из списка):
source 'http://rubygems.org'
source 'http://gemcutter.org'
source "http://gems.github.com"
gem 'rails', '3.1.0'
gem 'mysql2'
group :assets do
gem 'sass-rails', " ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
gem 'therubyracer'
gem "devise"
1 ответ
Как указано здесь, это ошибка в Bundler. Чтобы это работало:
module SomeGem
module Generators
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path('../templates', __FILE__)
desc "This adds devise"
def install
gem "devise"
Bundler.with_clean_env do
run "bundle install"
end
end
end
end
end