Rails 3 runner 没有检测到 JSON gem?
Posted
技术标签:
【中文标题】Rails 3 runner 没有检测到 JSON gem?【英文标题】:Rails 3 runner not detecting JSON gem? 【发布时间】:2011-06-13 18:19:03 【问题描述】:我正在尝试创建 Ruby 脚本以在我的 Rails 3 环境中运行。
但是,每当我使用 Rails Runner 运行此 rubyscript 时,都会收到以下错误:
require 'rubygems'
require 'json'
@payload =
"message" => "helloworld",
"station" => "id"=>12345
.to_json
puts @payload
错误:
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require': no such file to load -- json (LoadError)
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require'
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `load_dependency'
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:554:in `new_constants_in'
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `load_dependency'
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `require'
from createflags.rb:2
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39:in `eval'
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands/runner.rb:47
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39:in `require'
from /usr/lib/ruby/gems/1.8/gems/railties-3.0.0.beta4/lib/rails/commands.rb:39
from script/rails:6:in `require'
from script/rails:6
谁能告诉我我能做些什么来解决这个问题?
【问题讨论】:
gem 列表正确显示:json (1.4.6, 1.4.3) & json_pure (1.4.6, 1.4.3)。该脚本使用“ruby scriptName.rb”可以正常运行,但不能使用“rails runner script.rb” 【参考方案1】:我并不完全熟悉 Bundler 的内部结构,但可能是它不允许 require
ing 其他不在 Gemfile 中的 gem。也许添加gem 'json'
会解决这个问题。
当然,ActiveSupport 有自己的 JSON 模块,所以应该不需要再引入另一个 gem。
【讨论】:
【参考方案2】:去掉 require "json" 然后试试。我相信 ActiveSupport 已经内置了 to_json。
【讨论】:
以上是关于Rails 3 runner 没有检测到 JSON gem?的主要内容,如果未能解决你的问题,请参考以下文章
heroku推送Rails 3.2应用时突然出现 "无法检测到RACK任务 "的情况(无其他错误)。