Ответ 1
У меня была та же проблема, но это было результатом наличия gem rmagick
.
Я запустил следующее:
gem uninstall rmagick
gem cleanup
И затем повторно запустил bundle
в моем стеке, и он снова работал у меня.
Я работаю над рельсами, сервер неожиданно перестает работать. Он отлично работает, и я использовал следующую команду [platform windows 7]
gem install -v=2.3.5 rails
И когда я использую rails s
, он дает следующую ошибку:
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:90:in `<class:Base>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:85:in `<module:Generator>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:48:in `<module:Rails>'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator/base.rb:6:in `<top (required)>'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails_generator.rb:34:in `<top (required)>'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
from c:/Ruby193/lib/ruby/gems/1.9.1/gems/rails-2.3.5/bin/rails:14:in `<top (required)>'
from c:/Ruby193/bin/rails:23:in `load'
from c:/Ruby193/bin/rails:23:in `<main>'
$ rails -v
Rails 2.3.5
$ ruby -v
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
У меня была та же проблема, но это было результатом наличия gem rmagick
.
Я запустил следующее:
gem uninstall rmagick
gem cleanup
И затем повторно запустил bundle
в моем стеке, и он снова работал у меня.
Я решил эту проблему. Используйте следующую команду и проблему.
gem install rails
Это установит обновленные рельсы, и все, что работает, снова найдет.
Запуск bundle exec rails s
работал у меня.
Мой проект использовал Rails 3.x, но когда я запустил rails -v
, я получил 2.3.17
, который является версией, используемой проектом, над которым я работал раньше. Как-то установка этой версии должна быть установлена как "по умолчанию".
Может ли кто-нибудь объяснить это?
если вы используете последнюю версию рельсов 3 или рельсов 4, используйте class_attributes
вместо write_inheritable_attribute
, т.е.
class_attribute :variable_name
self.variable_name = value
вместо
write_inheritable_attribute(:variable_name, value)
У меня была эта проблема, и случилось так, что я использовал неправильный рубин и gemset в rvm.
(@jeremy-f и @alex-villa находятся на правильном пути для идентификации самой проблемы.)
Проблема в том, что команда rails ...
в Rails версии 2 является генератором, эквивалентным rails new ...
в Rails 3+. Таким образом, rails s
является командой Rails 2 для создания нового приложения Rails 2 с именем "s" (тогда как большинство из нас, когда мы пишем rails s
, намереваемся использовать Rails 3, то есть запускаем сервер!)
Если вы установите драгоценный камень, он обычно будет устанавливать свой двоичный путь в пути, поэтому вы должны будете вызвать эту ошибку, выполнив gem install rails -v 2.3.15
, затем rails s
, как говорит OP.
Три способа исправить:
gem install rails
для установки более новой версии Rails (вам может потребоваться указать версию >= 3.0)bundle exec rails s
(только если у вас есть Rails 3 в Gemfile)script/server