热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当gem没有执行任务时-Whenevergemisnotexecutingtask

IsetuparailsprojecttousetheWhenevergem.NowIdeploymyprojectwithCapistranoandtheta

I set up a rails project to use the Whenever gem. Now I deploy my project with Capistrano and the tasks are nicely added to crontab list. But when I see only one line:

我建立了一个rails项目来使用这个gem。现在我用Capistrano部署我的项目,这些任务很好地添加到crontab列表中。但当我只看到一行:

/bin/bash: bundle: command not found

So I read a couple of articles online so I added this on top of my schedule.rb file

我在网上读了几篇文章,所以我把它加在了我的课程表上。rb文件

env 'PATH', ENV['PATH']

So you should think problem solved, because this will add this next line to the crontab:

所以你应该认为问题已经解决了,因为这将为crontab添加下一行:

PATH=/var/rails/alfa_paints/shared/bundle/ruby/1.9.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

So you should think bundle is in the path when the command gets executed. But still no luck. I ran the command and the deployment with a seperate user. So to make sure everything runs with that user, deployer in this case. I asssumed the role of deployer and ran the command as specified in crontab. I didn't experience any problems when executing this command.

因此,当命令执行时,您应该认为bundle位于路径中。但是仍然没有运气。我使用一个独立的用户运行命令和部署。为了确保所有东西都能运行,在这个例子中是部署者。我分析了部署人员的角色,并按照crontab中指定的方式运行命令。执行此命令时,我没有遇到任何问题。

I'm running out of options and was wondering if anybody else experienced this strange behavior? I'm hoping for some advise. This is the output in my crontab:

我已经没有选择的余地了,我想知道是否还有其他人经历过这种奇怪的行为?我希望得到一些建议。这是我的crontab的输出:

# Begin Whenever generated tasks for: alfa_paints
 PATH=/var/rails/alfa_paints/shared/bundle/ruby/1.9.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

0 1 * * * /bin/bash -l -c 'cd /var/rails/alfa_paints/releases/20130127192223 && RAILS_ENV=production bundle exec rake alfa:cleanup --silent >> /var/rails/alfa_paints/shared/log/whenever.log 2>&1'

# End Whenever generated tasks for: alfa_paints

Any help welkom!

任何帮助welkom !

2 个解决方案

#1


1  

You'll need to pass in the necessary environment variables in crontab.

您需要在crontab中传递必要的环境变量。

Add these lines at the top of your crontab (crontab -e)

在你的crontab (crontab -e)的顶部添加这些线条

(obviously you'll modify the values of the variables to represent those in your environment)

(显然,您将修改变量的值以表示您的环境中的变量)

(in this case I'm using RVM)

(这里我用的是RVM)

PATH=/home/deploy/.rvm/gems/ruby-2.0.0-p247/bin:/home/deploy/.rvm/gems/ruby-2.0.0p247@global/bin:/home/deploy/.rvm/rubies/ruby-2.0.0p247/bin:/home/deploy/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/bin/:/home/deploy/.rvm/bin

路径= / home /部署/ .rvm /珠宝/ ruby-2.0.0-p247 / bin:/ home /部署/ .rvm /珠宝/ ruby-2.0.0p247@global / bin:/ home /部署/ .rvm /红宝石/ ruby-2.0.0p247 / bin:/ home /部署/ .rvm / bin:/ usr /地方/ bin:/ usr / bin:/ bin:/ usr /地方/游戏:/ usr /游戏:/ usr / bin /:/ home /部署/ .rvm / bin

GEM_HOME=/home/deploy/.rvm/gems/ruby-2.0.0-p247

GEM_HOME = / home /部署/ .rvm /珠宝/ ruby-2.0.0-p247

GEM_PATH=/home/deploy/.rvm/gems/ruby-2.0.0-p247/home/deploy/.rvm/gems/ruby-2.0.0-p247@global

GEM_PATH = / home /部署/ .rvm /珠宝/ ruby-2.0.0-p247 / home /部署/ .rvm /珠宝/ ruby-2.0.0-p247@global

MY_RUBY_HOME=/home/deploy/.rvm/rubies/ruby-2.0.0-p247

MY_RUBY_HOME = / home /部署/ .rvm /红宝石/ ruby-2.0.0-p247

#2


1  

Which shell are you using? Since I have seen whenever adds 'bash -l -c ' in job command. Either set

你用的是哪个壳层?因为我曾见过在job command中添加bash -l -c。要么设置

set :job_template, nil

设置:job_template,nil

or if you are using zsh then

或者如果你使用zsh

set :job_template, "zsh -l -c ':job'"

set:job_template "zsh -l -c ':job'"

This solved my issue

这解决了我的问题


推荐阅读
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
author-avatar
dengyuanc_928
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有