执行ruby脚本trhough bundle时出现问题

时间:2015-10-21 11:23:41

标签: ruby-on-rails ruby deployment ssh

我的服务器上有一个ruby on rails项目和这个用户:

projectUser:拥有项目文件夹的用户,以及执行时的用户

bundle exec rails runner script/some-script.rb

它有效

myUser:我用它登录并且在sudoers组中,所以我这样做:

sudo su 

su projectUser

cd path/toRuby/OnRailsApp

bundle exec rails runner script/some-script.rb

它没有'工作:

Coul not find 'some-gem' in any of the sources
Run bundle install to install missing gems

当我从root到projectUser时使用su -

我有另一个错误:

block in <class:Application>': undefined method `each' for nil:NilClass (NoMethodError)

所以它只适用于我直接使用projectUser

制作ssh

我检查了红宝石环境并且有不同之处:

su:使用不同的ruby版本2.0.0

projectUser:使用ruby 2.1.6

su - :使用ruby 2.1.6,看起来都一样

我不知道如何使用myUser访问ssh,然后更改为projectUser并使其正常工作,我不使用capistrano,但我认为问题是类似的东西:blob和{{ 3}}

2 个答案:

答案 0 :(得分:0)

  1. 告诉我宝石名称,可能是这个宝石需要一些依赖。
  2. 解决nil类错误。
  3. 您可以检查哪个用户正在运行捆绑包安装。实际上我们设置了rvm和ruby路径$ Home变量。如果用户不同,则无法访问默认用户的homme变量,如“ubuntu&#39;”,可能会出现问题:)
  4. 可能是项目用户自己的.basrc文件,其中ruby&amp; rvm路径设置是必需的。

答案 1 :(得分:0)

当我使用用户项目使用ssh登录时,有一个变量:

$ export
...
RAILS_ENV="production"
...

当我执行otherUser =&gt; root =&gt; su - antifraude当你用export导出时,这个变量不是,所以你有两个解决方案:

导出此变量像这样执行脚本

RAILS_ENV=production bundle exec rails runner script/update_folders_names.rb

这样就可以了。