0

我会先说我知道一点 Ruby 但不是很好,所以这很可能是一个常见的 Ruby 错误(但我似乎找不到答案!)

我有这个厨师食谱(使用 Vagrant 运行):

package "php5-fpm" do
  action :install
end

template "/etc/php5-fpm/pool.d/site" do
  source "php-fpm.erb"
  owner "root"
  group "root"
  mode 0644
  action :create
  only_if "dpkg --get-selections | grep php5-fpm"
end

service "php5-fpm" do
  action :restart
end

这失败并显示以下消息:

================================================================================
Recipe Compile Error in /tmp/.../cookbooks/site/recipes/php-fpm.rb
================================================================================

SyntaxError
-----------
compile error
/tmp/.../cookbooks/site/recipes/php-fpm.rb:1: syntax error, unexpected
tIDENTIFIER, expecting $end
    template "/etc/php5-fpm/pool.d/site" d...
                                  ^
Cookbook Trace:
---------------
  /tmp/.../cookbooks/dosos/recipes/php-fpm.rb:1:in `from_file'

Relevant File Content:
----------------------
    /tmp/.../cookbooks/dosos/recipes/php-fpm.rb:

end  2:  :restart" do-selections | grep php5-fpm"

这对我来说没有多大意义,因为“相关文件内容”似乎是从文件的不同部分中删除的。

Ruby 是否有一些关于在字符串中添加斜杠的内容(如果是这样,为什么前面 3 个斜杠不会出错,除非它从右到左运行?)

4

1 回答 1

2

我正在使用 Vagrant 使用 Chef 脚本来配置我的服务器。Chef 脚本是在 Windows 上编辑的,可通过共享文件夹在 Linux VM 上使用。

错误是我在 Windows 上的编辑器没有配置为使用 Unix 行尾,这让 Ruby 感到困惑。剥离回车符 ( ^M) 允许脚本正常运行。

于 2013-03-21T16:08:54.063 回答