71673


capistrano だけを実行するデプロイ用のサーバーがあるのですが  
Gemfile を共有してると bundle install を通すためだけに必要のないサービスを全部インストールしないといけなくなります

例えば MySQL にアクセスするのに Gemfile に  
gem 'mysql2'  
って書かれてると libmysql.so とかがないと bundle install 通らないので  
capistrano が実行できません

でも capistrano 実行するだけなら MySQL って必要ないんですが  
無駄なものをインストールしなくて済むような回避方法ってないんでしょうか

capistrano 実行だけ別の Gemfile を参照するとか

capistrano 実行時だけ環境名を変更して  
Gemfile 中に `group not :deploy do ` のような感じでデプロイ環境じゃない場合だけ有効になるような記述方法はないでしょうか


CC BY-SA 4.0
2020-10-29T10:09:28.847
71591
2020-11-02T11:06:42.707
2020-11-02T11:06:42.707
754
question
ruby-on-rails bundler capistrano
capistrano を実行する環境でジェムを最小限に制限して bundle install したい


`BUNDLE_GEMFILE` の環境変数を指定しながら bundle を実行すると、そのファイルを見にいってくれます。なので、 capistrano
だけを追加した、例えば `Gemfile.cap` などを用意し、

[code]

    BUNDLE_GEMFILE=Gemfile.cap bundle exec cap production deploy
    
[/code]

などをデプロイ用のコマンドとすれば、ひとまず要件である「Gemfile を分離する」は実現できそうだな、と思っています。

参考: <https://bundler.io/v1.5/bundle_config.html>


CC BY-SA 4.0
2020-11-02T11:05:58.033
71673
2020-11-02T11:05:58.033
754
71591
answer