Railsコントローラーで別のプロジェクトのrakeタスクを使用してシェルコマンドを実行しようとしています:
def generate
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && bundle exec rake users:build`
end
問題は、そのタスクでは機能しない(何も起こらない)rake routes
ことですが、たとえば実行すると、正常に実行されます。
別のrubyプロジェクトを実行している場合は、コマンドを実行する前に、現在のバンドラー環境をクリーンアップしてください。Bundlerは、次の方法でこの不便に取り組む簡単な方法を提供します。
Bundler.with_clean_env{
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && BUNDLE_GEMFILE=path/to/Gemfile bundle exec rake users:build`
}
BUNDLE_GEMFILEとBundler.with_clean_envに注意してください
ベスト!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加