Travis CI中的YAML解析错误,但不是本地解析

时间:2014-10-19 13:13:16

标签: ruby-on-rails-4 travis-ci ruby-2.0

我使用Travis CI作为宝石我正在开发并遇到一个奇怪的错误(链接在问题的最后)。

gem正在存储一些使用YAML序列化的信息,这些信息不是手动构建的,而是使用YAML.dump然后再次使用YAML.load加载。

以下行用于从/向YAML转储和加载哈希:

headers[:ar_mailer_settings] = YAML.dump(settings)
...
ar_settings = YAML.load(mail['ar_mailer_settings'].value)

后一行似乎在Travis CI上产生错误,但是当我使用相同的二进制版本在本地运行测试时,一切都运行得很好:

Psych::SyntaxError: (<unknown>): mapping values are not allowed in this context at line 1 column 22
/home/travis/.rvm/rubies/ruby-2.0.0-p576/lib/ruby/2.0.0/psych.rb:205:in `parse'
...
/home/travis/build/Stex/ar_mailer_revised/lib/action_mailer/ar_mailer.rb:84:in `deliver!'

我在puts方法中添加了一个简单的deliver!来查看存储值是否存在差异,而且似乎Travis CI忽略了生成的YAML中的换行符,然后导致了解析错误:

特拉维斯

"--- smtp_settings: :address: localhost :port: 25 :domain: localhost.localdomain :user_name: some.user :password: some.password :authentication: :plain :enable_starttls_auto: true "

本地

"---\nsmtp_settings:\n  :address: localhost\n  :port: 25\n  :domain: localhost.localdomain\n  :user_name: some.user\n  :password: some.password\n  :authentication: :plain\n  :enable_starttls_auto: true\n"

有趣的是,在特拉维斯CI失败之前,我没有改变任何关于这些方法的东西,所以我不确定我是否只是忽略了这里的某些东西,或者它是否是某种东西不相容问题。

我可以做些什么来保留换行符吗?

修改:其他信息

  • gem允许为单个电子邮件记录设置自定义SMTP设置和属性。
  • 在ActionMailer :: Base实例中生成电子邮件时,可以直接设置这些内容see here for a dummy mailer
  • 要将这些自定义设置传输到ActionMailer deliver! - 实际创建新电子邮件记录的方法,我会通过YAML序列化这些设置,暂时将它们保存在电子邮件标题中,稍后将其还原,请参阅{{ 1}}和ar_mailer_setting here

引发错误的源代码:here

完整的Travis CI输出:here

如果需要更多信息,请告知我们,我会将其添加到问题中。 提前谢谢!

0 个答案:

没有答案