代码之家  ›  专栏  ›  技术社区  ›  Luiz Henrique

如何运行bash脚本从其目录外更新Rails应用程序?

  •  0
  • Luiz Henrique  · 技术社区  · 6 年前

    我有一个脚本,应该从 /~ 目录:

    #!/bin/bash
    APP=/root/apps/monitoring
    cd $APP
    git pull
    rake assets:precompile RAILS_ENV=production
    touch $APP/tmp/restart.txt
    

    正如您所看到的,它提取新的提交,更新资产,并重新启动Apache。问题是它运行线路的时间 rake assets:precompile RAILS_ENV=production ,它说:

    Could not find proper version of rake (12.1.0) in any of the sources
    Run `bundle install` to install missing gems.
    

    这很奇怪,因为执行此命令时,我应该在应用程序的文件夹(/根/应用程序/监视)中。我做错了什么?

    3 回复  |  直到 6 年前
        1
  •  1
  •   faron    6 年前

    您可能需要在脚本中加载rvm( https://rvm.io/workflow/scripting )可以选择合适的红宝石/宝石。

    您还可以考虑使用包装器 bundle 创建时间 rvm wrapper

        2
  •  1
  •   fl9    6 年前

    请尝试

    #!/bin/bash
    APP=/root/apps/monitoring
    cd $APP
    git pull
    bundle exec rake assets:precompile RAILS_ENV=production
    touch $APP/tmp/restart.txt
    

    具有 bundle exec 它应该会起作用。

        3
  •  1
  •   texdevelopers    6 年前

    我使用bash脚本包装器运行rake任务。诀窍是在任务启动后使用source命令在rvm环境中加载

    实例上海

    #!/bin/bash
    # change the directory
    cd /home/ubuntu/GSeries
    # load rvm ruby
    source /home/ubuntu/.rvm/environments/ruby-2.4.2@mygemset
    bundle exec rake  db:prune_logs RAILS_ENV="production" &>> /home/ubuntu/GSeries/log/prune_logs.log