我尝试将应用程序从3.2升级到rails 4.我认为所有的宝石冲突此刻已经解决,但后来我知道它可能会再次发生.
虽然我尝试“捆绑exec rails s”并在浏览器中打开应用程序转到app home索引,但它给了我这个错误:
IOError(未打开以供阅读)
有人可以帮忙吗?非常感谢.
这是我使用的宝石列表:
gem 'rails','4.0.1' gem 'sass-rails','~> 4.0.0' gem 'coffee-rails','~> 4.0.0' gem 'uglifier','>= 1.3.0' gem 'jquery-rails' gem 'jbuilder','~> 1.2' # add these gems to help with the transition: gem 'protected_attributes' gem 'rails-observers' gem 'actionpack-page_caching' gem 'actionpack-action_caching' gem "activerecord-session_store"
这是控制台的日志消息:
Started GET "/" for 127.0.0.1 at 2013-11-06 20:16:27 +1100 Processing by HomeController#index as HTML PCategory Load (0.5ms) SELECT "p_categories".* FROM "p_categories" Rendered home/index.html.erb within layouts/application (4.1ms) Completed 500 Internal Server Error in 15ms IOError (not opened for reading): activesupport (4.0.1) lib/active_support/json/encoding.rb:256:in `each' activesupport (4.0.1) lib/active_support/json/encoding.rb:256:in `to_a' activesupport (4.0.1) lib/active_support/json/encoding.rb:256:in `as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:58:in `block in as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:81:in 'check_for_circular_references' activesupport (4.0.1) lib/active_support/json/encoding.rb:57:in `as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `block in as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `each' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `map' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:58:in `block in as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:81:in g`check_for_circular_references' activesupport (4.0.1) lib/active_support/json/encoding.rb:57:in `as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `block in as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `each' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `map' activesupport (4.0.1) lib/active_support/json/encoding.rb:296:in `as_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:50:in `block in encode' activesupport (4.0.1) lib/active_support/json/encoding.rb:81:in `check_for_circular_references' activesupport (4.0.1) lib/active_support/json/encoding.rb:49:in `encode' activesupport (4.0.1) lib/active_support/json/encoding.rb:306:in `block in encode_json' activesupport (4.0.1) lib/active_support/json/encoding.rb:306:in `each' activesupport (4.0.1) lib/active_support/json/encoding.rb:306:in `map'
解决方法
事实证明,创业板冲突是我遇到的类似问题的罪魁祸首.我用来自使用Rails的间接相关问题的代码修复了问题.请看下面,我希望这对你有帮助.
#fix for JSON gem/activesupport bug. More info: https://stackoverflow.com/questions/683989/how-do-you-deal-with-the-conflict-between-activesupportjson-and-the-json-gem if defined?(ActiveSupport::JSON) [Object,Array,FalseClass,Float,Hash,Integer,NilClass,String,TrueClass].each do |klass| klass.class_eval do def to_json(*args) super(args) end def as_json(*args) super(args) end end end end