14

我正在使用 Rails,Rails 服务器突然停止工作。它工作正常,我使用了以下命令 [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]
4

6 回答 6

18

我有同样的问题,但这是拥有gem rmagick.

我运行了以下内容:

gem uninstall rmagick 
gem cleanup 

然后在我的堆栈中重新运行bundle,它再次对我有用。

于 2012-10-02T06:09:07.517 回答
8

我已经解决了这个问题。使用以下命令,问题就消失了

 gem install rails

这将安装更新的导轨并再次找到所有工作。

于 2012-06-18T07:53:04.453 回答
7

跑步bundle exec rails s对我有用。

我的项目使用的是 Rails 3.x,但是当我运行时,rails -v我得到2.3.17了我之前工作的项目使用的版本。不知何故安装此版本必须设置为“默认”。

有人可以解释一下吗?

于 2013-12-12T08:34:35.350 回答
4

如果您使用的是最新版本的 rails 3 或 rails 4,请使用class_attributes而不是write_inheritable_attribute,即

class_attribute :variable_name
self.variable_name = value

代替

write_inheritable_attribute(:variable_name, value)
于 2013-10-25T06:33:43.640 回答
1

我遇到了这个问题,碰巧我在 rvm 中使用了错误的 ruby​​ 和 gemset。

于 2013-04-13T22:17:07.333 回答
1

(@jeremy-f 和 @alex-villa 正在正确地识别问题本身。)

这里的问题是rails ...Rails 版本 2 中的命令是生成器,相当于rails new ...Rails 3+ 中的命令。rails s生成一个名为“s”的新 Rails 2 应用程序的 Rails 2 命令也是如此(而我们大多数人在编写时都rails s打算使用 Rails 3,即启动服务器!)

如果您安装 gem,它通常会在路径中安装其二进制文件,因此您应该能够按照 OP 所说的那样执行gem install rails -v 2.3.15then来导致此错误。rails s

修复它的三种方法:

  • gem install rails安装较新版本的 Rails(您可能必须指定版本 >= 3.0)
  • 运行应用程序bundle exec rails s(仅当您的 Gemfile 中有 Rails 3 时)
  • 运行 Rails 2 项目的常用方法很简单script/server
于 2014-06-02T02:07:00.257 回答