【问题标题】:Rake aborted! Can't convert Hash into String?瑞克失败了!无法将哈希转换为字符串?
【发布时间】:2012-04-05 19:23:50
【问题描述】:

如何更好地调试此消息?跟踪显示了我的一个文件中的 3 行 - application.rb:

18 module CustomApp
19   class Application < Rails::Application
...
49 # Enable the asset pipeline

有没有办法准确找出哪个文件引发了这个错误?

最后的痕迹:

/home/user/.rvm/gems/ruby-1.9.3-p0/gems/figaro-0.2.0/lib/figaro/railtie.rb:8:in `update'

我觉得自己碰壁了。出于这个原因,虽然我急于修复这个错误,但我更急于找出如何更好地调试这些消息?像“Can't convert Hash into String in somefile.rb:112”这样的事情肯定会很容易处理吗?

【问题讨论】:

  • 这不是那个 gem 的最新版本,也许尝试更新它?
  • 刚刚更新了捆绑程序 - “安装 figaro (0.2.0)”。同样的错误。使用新跟踪更新了原始问题。
  • 您的config/application.yml 文件似乎有问题。您是否以任何方式更改了它,或者它的格式不正确? (我是根据阅读您的“最后一次跟踪”中报告的代码行来做出这个猜测的。
  • 我在 Rake v0.9.2 上得到了相同的结果,但在 v10 上却没有。所以升级肯定对我有帮助。请确保它不是来自 rake 本身(并且该痕迹是红鲱鱼)

标签: ruby-on-rails ruby


【解决方案1】:

要了解 ruby​​-debug:http://bashdb.sourceforge.net/ruby-debug.html

要了解调试 Rails:http://guides.rubyonrails.org/debugging_rails_applications.html

错误来自这个文件:

lib/figaro/railtie.rb line 8

该文件中的代码块:

path = Rails.root.join("config/application.yml")
ENV.update(YAML.load(File.read(path)) || {}) if File.exist?(path)

解决问题的一种方法是使用 ruby​​-debug:

gem install ruby-debug

并编辑该文件以使其显示更好的错误:

path = Rails.root.join("config/application.yml")
if File.exist?(path)
   debugger  
   f = File.read(path)  
   y = YAML.load(f)
   ENV.update(y || {})
end

【讨论】:

  • 对于 Ruby 2.0,另请参阅 byebug gem,它是新的和快速的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
相关资源
最近更新 更多