stderr / usr / local / bin / bundle:bundle install

时间:2016-04-30 11:58:08

标签: ruby-on-rails ruby rubygems passenger ansible

我正在使用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。 对此有何帮助和建议?

1 个答案:

答案 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