【问题标题】:Rails3, Running rake task from cronRails3,从 cron 运行 rake 任务
【发布时间】:2011-07-27 23:19:13
【问题描述】:

我在从 cron 运行我的 rake 任务时遇到问题,我将它包装在 shell 文件中,当我从控制台执行这个 shell 文件时它工作正常。

#!/bin/sh

if ps -ef | grep -v grep | grep create_all_accounts ; then
    exit 0
else
    cd /home/prosoftstudio/www/prosoftstudio_egabinet && /home/prosoftstudio/www/.ruby/gems/1.8/bin/rake gabinet:create_all_accounts RAILS_ENV=production --trace
    exit 0
fi

crontab 中的入口是这样的(我设置了 PATH 和 GEM_PATH)

PATH=/home/prosoftstudio/www/.python/bin:/usr/local/python2.6/bin:/home/prosoftstudio/www/.ruby/gems/1.8/bin/:/usr/local/ruby1.8/bin:/usr/local/bin:/usr/bin:/bin:/us$
GEM_PATH=/home/prosoftstudio/www/.ruby/gems/1.8:/home/prosoftstudio/www/.ruby/gems/1.8/bundler/gems:/usr/lib/ruby/gems/1.8/
*/1 * * * * /home/prosoftstudio/www/cron_create_accounts.sh > cron_log.txt 2>&1

我得到的输出是

rake aborted!
git://github.com/100hz/rails-settings.git (at master) is not checked out. Please run `bundle install`

似乎找不到安装的 gems

gem "rails-settings", :git => "git://github.com/100hz/rails-settings.git"

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cron rake


    【解决方案1】:

    我想出了解决方法 - 从源代码安装 rails-settings

    wget https://github.com/100hz/rails-settings/zipball/master --no-check-certificate
    unzip 100hz-rails-settings-v0.1.1-0-g330b958.zip
    cd 100hz-rails-settings-330b958/
    gem build rails-settings.gemspec
    gem install rails-settings-0.1.1.gem
    

    你必须从 Gemfile 中的 gem "rails-settings" 中删除 ":git =>",然后运行

    bundle install
    

    更新 Gemfile.lock

    之后我的脚本从 cron 运行。

    【讨论】:

      【解决方案2】:

      为避免构建 gem,另一种选择是将 gem 内容放在 vendor 文件夹中,并通过 Gemfile 中的 :path 引用它:

      gem "my_gem", :path => "vendor/my_gem"

      【讨论】:

        猜你喜欢
        • 2016-11-03
        • 2012-09-02
        • 1970-01-01
        • 2020-11-18
        • 2014-05-27
        • 2010-10-09
        • 2012-11-15
        • 2011-12-24
        • 2014-12-21
        相关资源
        最近更新 更多