Почему мое приложение Rails не может найти драгоценности, которые поставляются вместе с ним? - PullRequest
3 голосов
/ 03 декабря 2009

У меня есть приложение Rails, использующее Cucumber и RSpec. Мы храним гемы в vendor / gems и пытаемся получить сборку приложения (выполнение тестов) на сервере CI.

Когда я пытаюсь запустить наши тесты, я получаю следующую ошибку:

Missing these required gems:
  cucumber  >= 0.3.11
  rspec-rails  >= 1.2.6

Когда я запускаю RAILS_ENV=test rake gems, я получаю следующее:

 - [F] activerecord-oracle-adapter
    - [R] activerecord >= 1.15.5.7843
 - [F] thoughtbot-factory_girl = 1.2.0
 - [F] cucumber >= 0.3.11
    - [ ] term-ansicolor >= 1.0.3
    - [ ] treetop >= 1.2.6
    - [ ] diff-lcs >= 1.1.2
    - [I] builder >= 2.1.2
 - [F] webrat >= 0.4.4
    - [I] nokogiri >= 1.2.0
 - [F] rspec >= 1.2.6
 - [F] rspec-rails >= 1.2.6
    - [F] rspec >= 1.2.7
    - [ ] rack >= 0.4.0
 - [F] thoughtbot-shoulda >= 2.10.2

I = Installed
F = Frozen
R = Framework (loaded before rails starts)

Означает ли пробел пустой [], что драгоценный камень отсутствует?

config / environment / test.rb содержит следующее:

config.gem "cucumber",           :lib => false,          :version => ">=0.3.11" unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/cucumber'))
config.gem "webrat",             :lib => false,          :version => ">=0.4.4"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/webrat'))
config.gem "rspec",              :lib => false,          :version => ">=1.2.6"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/rspec'))
config.gem "rspec-rails",        :lib => "spec/rails",   :version => ">=1.2.6"  unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
config.gem "thoughtbot-shoulda", :lib => false,          :version => ">=2.10.2" unless File.direct
ory?(File.join(Rails.root, 'vendor/plugins/shoulda'))

Так что все выглядит по порядку, но все равно отказывается работать.

Я что-то упускаю из виду?

1 Ответ

4 голосов
/ 03 декабря 2009

Похоже, у вас cucumber, rspec и rspec-rails заморожены (распакованы) в каталоге vendor/gems, но у вас отсутствуют зависимости для cucumber и rspec-rails. Как говорится в комментарии к вопросу, [] указывает на то, что отсутствует.

Я бы начал заново:

rm -rf vendor/gems/cucumber
rm -rf vendor/gems/rspec-rails
rm -rf vendor/gems/rspec

Затем установите драгоценные камни локально:

gem install rspec rspec-rails cucumber

На этом этапе вы сможете успешно протестировать приложение.

Наконец, распакуйте, затем в каталог vendor/gems, если хотите:

RAILS_ENV=test rake gems:unpack:dependencies GEM=rspec-rails
RAILS_ENV=test rake gems:unpack:dependencies GEM=cucumber

или альтернативно:

RAILS_ENV=test rake gems:unpack:dependencies

, чтобы просто распаковать все для тестовой среды в vendor/gems. Это приведет к распаковке драгоценного камня nokogiri, который вы в данный момент установили локально, но не заморожен в приложение.

...