【发布时间】:2015-04-01 20:47:44
【问题描述】:
我是 Chef 部署的新手,我正在尝试使用 OpsWorks 部署一个 Rails 应用程序。问题在于资产预编译。
我有这个方法来执行预编译:
execute "rake assets:precompile" do
cwd release_path
command "bundle exec rake assets:precompile --trace"
environment "RAILS_ENV" => "production"
end
当我使用 Chef 进行部署时,我收到以下错误:
ERROR: undefined method `release_path' for Chef::Resource::Execute
奇怪的是,我能找到的每个示例配方都使用了 release_path 助手。这里怎么能不定义呢?
【问题讨论】:
-
您是否在
execute之外使用deploy资源?在那里,release_path方法存在,但是当它在你的配方的顶层时,release_path没有定义。请出示您的完整代码。 -
那是
precompile.rb的完整内容,这是我的食谱。我应该将此代码包装在deploy资源中吗? -
这取决于,如果你想使用
deploy资源 - 你不必。只需将release_path替换为例如"/usr/local/myapp" -
实际上你当然应该用你的rails应用程序的路径替换它;-)
标签: ruby-on-rails-4 asset-pipeline chef-infra aws-opsworks