Проблемы с Rake и Ruby on Rails - PullRequest
1 голос
/ 09 июня 2011

Я пытался запустить рейк, но похоже, что с тех пор, как я обновил рубиновые гемы, рейк не работает.

Этим утром я побежал:

gem update --system

И с тех пор грабли терпели неудачу со следующей ошибкой:

$ rake db:migrate                                                                                 
rake aborted!
undefined method `specifications' for "/usr/lib/ruby/gems/1.9.1":String
/home/cknadler/projects/ecommerce/Rakefile:7:in `<top (required)>'
(See full trace by running task with --trace)

Я читал об этой проблеме, и похоже, что есть проблема с rake 0.9.x, которая ломает рельсы, но когда я проверяю свою версию rake, я запускаю 0.8.7:

$ rake --version                                                                                    
rake, version 0.8.7

Я попытался удалить грабли и переустановить их, используя bundler и т. Д., И в этот момент я застрял. Заранее спасибо.

Edit:

Мой Rakefile (находится в корневом каталоге моего приложения)

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'

Ecommerce::Application.load_tasks

Ответы [ 2 ]

4 голосов
/ 10 июня 2011

Я бы предложил использовать бинарную версию rake в комплекте, чтобы избежать этой проблемы.

bundle exec rake db:migrate

Если вы установили свой пакет с помощью binstubs (bundle install --binstubs), то вы также можете использовать версию rake для бинарной сборки, котораяэквивалентно команде bundle exec rake:

bin/rake db:migrate

PS: я бы также рекомендовал использовать RVM вместо установки Ruby с использованием sudo для всех пользователей.Это позволяет сохранить более модульную установку ruby ​​и gem.

1 голос
/ 10 июня 2011

Вы должны удалить rake 0.9.x (у вас может быть установлен 0.9.2), выполнив

gem uninstall rake -v=0.9.2

А затем запустите обновление пакета

bundle update

Надеюсь, это поможет.

...