2012-06-18 40 views
13

Tôi đang làm việc trên đường ray, đột nhiên đường ray máy chủ ngừng hoạt động. Nó làm việc tốt và tôi đã sử dụng sau lệnh [nền tảng windows 7]phương thức chưa xác định `write_inheritable_attribute 'cho Rails :: Generator :: Base: Class (NoMethodError)

gem install -v=2.3.5 rails 

Và khi tôi sử dụng rails s, nó đem lại cho các lỗi sau:

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] 

Trả lời

16

Tôi gặp vấn đề tương tự, nhưng đó là kết quả của việc có gem rmagick.

Tôi chạy như sau:

gem uninstall rmagick 
gem cleanup 

Và sau đó lại chạy bundle trong ngăn xếp của tôi và nó làm việc cho tôi một lần nữa.

7

tôi đã giải quyết được vấn đề này. Sử dụng lệnh và sự cố sau đây đã biến mất

gem install rails 

Điều này sẽ cài đặt thanh ray cập nhật và mọi thứ hoạt động trở lại.

1

Tôi gặp sự cố này và xảy ra rằng tôi đang sử dụng sai mã vạch và đá quý trong rvm.

3

nếu bạn đang sử dụng phiên bản mới nhất của đường ray 3 hoặc 4 đường ray sau đó sử dụng class_attributes thay vì write_inheritable_attribute, ví dụ:

class_attribute :variable_name 
self.variable_name = value 

thay vì

write_inheritable_attribute(:variable_name, value) 
+0

này đã giúp tôi để cập nhật một đường ray 2- phong cách plugin cho đường ray 3 và 4. Cảm ơn! – AJFaraday

7

Chạy bundle exec rails s làm việc cho tôi.

Dự án của tôi đang sử dụng Rails 3.x nhưng khi tôi chạy rails -v Tôi nhận được 2.3.17 là phiên bản được sử dụng bởi dự án tôi đã làm trước đây. Bằng cách nào đó cài đặt phiên bản này phải được đặt là "mặc định".

Ai đó có thể giải thích điều này?

+0

Tôi đang gặp vấn đề tương tự và rất thích giải thích. –

+0

trước hết sử dụng đá quý cài đặt đường ray, đường ray s – indb

0

(@ jeremy-f và @ alex-biệt thự đang đi đúng hướng để xác định các vấn đề riêng của mình.)

Vấn đề ở đây là các lệnh rails ... trong Rails phiên bản 2 là một máy phát điện, tương đương với rails new ... trong Rails 3+. Vì vậy, rails s là một lệnh Rails 2 để tạo ra một ứng dụng Rails 2 mới được gọi là "s" (trong khi hầu hết chúng ta khi viết rails s có ý định sử dụng Rails 3, tức là bắt đầu một máy chủ!)

Nếu bạn cài đặt một viên ngọc, nó thường sẽ cài đặt nhị phân của nó trong đường dẫn, vì vậy bạn sẽ có thể gây ra lỗi này bằng cách thực hiện gem install rails -v 2.3.15 rồi rails s như OP nói.

Ba cách để sửa chữa nó:

  • gem install rails để cài đặt một phiên bản mới hơn của Rails (bạn có thể phải chỉ định một phiên bản> = 3.0)
  • Chạy ứng dụng với bundle exec rails s (chỉ khi bạn có Rails 3 trong Gemfile của bạn)
  • Cách thông thường để chạy một dự án Rails 2 chỉ đơn giản là script/server
Các vấn đề liên quan