2012-06-18 15 views
13

私はレールに取り組んでいます。私はこの問題を解決した未定義のメソッド `write_inheritable_attribute 'for Rails :: Generator :: Base:Class(NoMethodError)

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] 

答えて

16

私は同じ問題がありましたが、それはgem rmagickの結果でした。

私は次のことを実行しました:

gem uninstall rmagick 
gem cleanup 

そして、私のスタックにbundle再実行し、それが再び私のために働きました。

7

:[プラットフォームの窓は7]

gem install -v=2.3.5 rails 

そして、私はrails sを使用する場合、それは次のようなエラーを与えていることは、細かい作業だと私は、以下のコマンドを使用しています。次のコマンドを使用して問題が解消しました

gem install rails 

これで、更新されたレールとすべての作業が再び検索されます。

1

私はこの問題を抱えていました。私はrvmで間違ったrubyとgemsetを使用していました。 bundle exec rails sを実行

3

あなたは、代わりにwrite_inheritable_attributeclass_attributesを使用するレール3またはレール4の最新バージョンを使用している場合、すなわち

class_attribute :variable_name 
self.variable_name = value 

代わりの

write_inheritable_attribute(:variable_name, value) 
+0

これで実行するための通常の方法でアプリがレール2-更新するために、私を助けましたレール3と4用のプラグインです。ありがとう! – AJFaraday

7

は私のために働きました。

私のプロジェクトではRails 3.xを使用していましたが、rails -vを実行したときは、私が直前に作業したプロジェクトで使用されているバージョンである2.3.17が得られました。どういうわけかこのバージョンをインストールするには、「デフォルト」として設定する必要があります。

誰かがこれを説明できますか?

+0

私は同じ問題を抱えていて、説明が大好きです。 –

+0

最初にgem install rails the、rails sを使用してください – indb

0

(ジェレミー-Fとアレックス・ヴィラ@ @は問題自体を識別するに正しい軌道に乗っている。)

ここでの問題は、Railsのバージョン2でrails ...コマンドがでrails new ...に相当する発電機であることですRails 3+。したがって、rails sは、Rails 2コマンドで "s"と呼ばれる新しいRails 2アプリケーションを生成します(ほとんどの人がrails sを使ってRails 3の使用を意図しています)。通常パスにバイナリをインストールするので、gem install rails -v 2.3.15を実行してからrails sを実行してこのエラーが発生するはずです。それを修正するために

3つの方法:

  • gem install railsのRailsの新しいバージョンをインストールするには(あなたはバージョン> = 3を指定する必要があります。0)
  • 実行bundle exec rails s(あなたのGemfileでのRails 3を持っている場合のみ)
  • Railsの2プロジェクトは単にscript/server
関連する問題