Почему «установка комплекта» заканчивается в генераторе Rails - PullRequest
2 голосов
/ 27 сентября 2011

Я пытаюсь создать собственный генератор для 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 Ответ

3 голосов
/ 24 января 2012

Как указано здесь , это ошибка в 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
...