首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cron + Rake任务尝试在Staging中调用sqlite3 (仅限开发/测试) (rake在外壳中工作)

Cron + Rake任务尝试在Staging中调用sqlite3 (仅限开发/测试) (rake在外壳中工作)
EN

Stack Overflow用户
提问于 2014-08-10 00:07:59
回答 1查看 84关注 0票数 1

在我的Rails 3.2应用程序中,我有一个自定义的rake任务,我试图在每天下午5点运行一个cron任务。现在我正在我们网站的临时服务器上运行它。cron作业设置正确,但是根据cron守护进程的电子邮件输出,rake将被中止,因为它正在尝试调用sqlite3。

这是我的cron工作:

代码语言:javascript
复制
#crontab
0 17 * * * cd /u/apps/my_app/current && /usr/local/bin/rake my_task

我为开发和测试预留了sqlite3,如下所示:

代码语言:javascript
复制
#Gemfile
group :development, :test do
  gem 'factory_girl_rails'                
  gem 'letter_opener'                      
  gem 'rspec-rails'            
  gem 'sqlite3'                             
  gem 'thin'
  gem 'pry-rails'                              
end

我还设置了我的rake任务来加载适当的环境,如下所示:

代码语言:javascript
复制
#mytask.rake
task :my_task => :environment do
    # my task
end

这是我从crond发来的电子邮件中收到的错误:

代码语言:javascript
复制
rake aborted!
Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (sqlite3 is not part of the bundle. Add it to Gemfile.)

如果我直接从shell运行rake任务,我不会得到错误。这似乎是因为~/.bashrc中的以下代码行得通

代码语言:javascript
复制
alias rake='RAILS_ENV=staging rake'

但是,当从cron作业运行时,这似乎不会对任务产生任何影响。我尝试将export RAILS_ENV=staging作为推荐的here添加到.bashrc文件中,但没有帮助。

我发现有一件事是可行的,就是像这样编写cron作业:

代码语言:javascript
复制
#crontab 
0 17 * * * cd /u/apps/my_app/current && /usr/local/bin/rake my_task RAILS_ENV=staging

在...with命令中直接执行环境声明。这看起来不是很优雅,但现在还可以。有没有更好的方法来解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 00:09:53

crontab您可以在Υ中设置环境变量(虽然不是在Arch或RedHat中...)

尝试按如下方式设置crontab

代码语言:javascript
复制
#crontab 

RAILS_ENV=staging

0 17 * * * cd /u/apps/my_app/current && /usr/local/bin/rake my_task
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25220467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档