CapistranoでPATH等の環境変数を設定する

Capfileに

load 'deploy/assets'

を追加すると、デプロイ時にassets:precompileを実行できるが、assets:precompile実行時に、

/usr/bin/env:
ruby
: そのようなファイルやディレクトリはありません

というエラーになってしまった。
ssh経由でのshellの実行時にPATHが通っていないのが原因と思われる。

解決方法

CapistranoでPATH等の環境変数を設定するには、:default_environmentを使う。

set :default_environment, {
  'PATH' => "/opt/ruby-enterprise-1.8.7-2011.03/bin:$PATH"
}

Change PATH environment with Rails and Capistrano - pastbedti.me
How do I configure capistrano to use my rvm version of Ruby - Stack Overflow
プリコンパイルする場合、config/environments/production.rbで、

config.assets.compile = false

にするが、assetsにapplication.js, application.css以外のjs、cssを使う場合は、以下のようにconfig.assets.precompileに追加する必要がある。追加しないと、smart_phone.css isn't precompiled のようなエラーになる。
config/environments/production.rb

config.assets.compile = false
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( smart_phone.css web_app_theme.css )

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください