【问题标题】:i'm getting this error: uninitialized constant YAML::ENGINE (NameError)我收到此错误:未初始化的常量 YAML::ENGINE (NameError)
【发布时间】:2011-10-19 16:03:57
【问题描述】:

我在 environment.rb 中有以下代码,当我尝试运行它时,我不断收到错误 uninitialized constant YAML::ENGINE (NameError)。

环境.rb

require 'yaml' 
YAML::ENGINE.yamler= 'syck'
# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Quora::Application.initialize!

有人有想法吗?

【问题讨论】:

  • 你能指定你的Ruby版本以及Rails吗?
  • Ruby v- 1.8.7 和 Rails v- 3.0.5

标签: ruby-on-rails ruby yaml


【解决方案1】:

YAML::ENGINE 在 Ruby 1.8.7 中不存在。这是在 Ruby 1.9 中定义的。我尝试在 1.8.7 和 1.9.2 上运行 irb。奇怪的是,它们的两个 YAML 版本号是相同的(0.6.0)。

另外,我认为 Ruby 1.8.7 的 YAML 已经使用 SYCK 进行 yaml 解析。 :)

【讨论】:

  • 使用YAML::ENGINE.yamler= 'syck' if defined?(YAML::ENGINE) 使其不会在 1.8.7 下爆炸。
  • 好点安德鲁!虽然我必须说我更喜欢使用 RVM 并避免尝试使项目在 2 个版本中运行。但情况并非总是如此,所以我同意......如果它只是一个 Ruby 1.8.7 项目,则不需要该行,但如果他需要该项目在(例如)1.9.2 和 1.8.7 中运行,那就是要走的路。
  • @AndrewGrimm 的评论实际上应该是公认的答案,因为它实际上解决了问题,而不是简单地解释它。
猜你喜欢
  • 2016-11-03
  • 1970-01-01
  • 2012-10-06
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
相关资源
最近更新 更多