我正在使用ansible为我的rails应用程序进行部署。问题是当添加一个新的gem并且ansible运行bundle install
时,它会出现以下错误:
stderr /usr/local/bin/bundle: argument list too long
/usr/local/bin/bundle: line 7: /usr/local/bin/bundle: success
进行捆绑安装的安全任务是
- name: Bundle install
command: 'bundle install --deployment --without development test'
register: bundler
args:
chdir: '/home/ubuntu/myproject'
我正在使用rvm来管理ruby版本。使用ruby-2.2.1并设置rvm以使用myproject的gemset,即rvm use ruby-2.2.1@myproject
。
.rvm/gems/
目录有ruby-2.2.1/
ruby-2.2.1@global/
ruby-2.2.1@myproject/
我已指定passenger_ruby /home/ubuntu/.rvm/wrappers/ruby-2.2.1@myproject/ruby
只有在Gemfile中添加新gem时才会发生这种情况,当只有代码更新时,一切正常。如果我明确地运行bundle install
ssh到相应的实例,它工作正常并安装gem。
对此有何帮助和建议?
答案 0 :(得分:1)
我遇到了这个问题。问题与脚本使用的包的路径/usr/local/bin/bundle
有关,但应该来自/home/ubuntu/.rvm/gems/ruby-2.2.1@myproject/bin/bundle
ansible的正确任务是
- name: Bundle install
command: bundle install --without development test
args:
chdir: /home/ubuntu/myproject
executable: /home/ubuntu/.rvm/gems/ruby-2.2.1@myproject/bin/bundle
environment:
GEM_HOME: /home/ubuntu/.rvm/gems/ruby-2.2.1@myproject
GEM_PATH: /home/ubuntu/.rvm/gems/ruby-2.2.1@myproject:/home/ubuntu/.rvm/gems/ruby-2.2.1@global