我会先说明我知道一点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个斜杠上出现错误,除非它从右向左运行?)
答案 0 :(得分:2)
我正在使用Vagrant使用Chef脚本配置我的服务器。 Chef脚本在Windows上编辑,可通过共享文件夹在Linux VM上使用。
错误在于我的Windows编辑器没有配置使用Unix线路结尾,这让Ruby感到困惑。剥离回车符(^M
)允许脚本正常运行。