这个问题可能只意义,如果你知道的,只要创业板创造的cron作业.
对于我的应用程序,我想whenever在所有环境中使用,包括测试和开发.
我schedule.rb看起来像这样:
set :output, {
:error => "#{path}/log/error.log",
:standard => "#{path}/log/cron.log"
}
set :environment, Rails.env.to_sym
every 5.minutes do
rake 'db:activity:synchronize'
end
Run Code Online (Sandbox Code Playgroud)
但它失败了Rails.env.to_sym(同样代表 RAILS_ENV):
/home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `eval': uninitialized constant Whenever::JobList::Rails (NameError)
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `eval'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/job_list.rb:21:in `initialize'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever.rb:15:in `new'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever.rb:15:in `cron'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/command_line.rb:41:in `run'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/lib/whenever/command_line.rb:8:in `execute'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/gems/whenever-0.6.8/bin/whenever:38:in `<top (required)>'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/bin/whenever:19:in `load'
from /home/marius/.rvm/gems/ruby-1.9.2-p290@uxolo/bin/whenever:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)
所以,我的问题基本归结为:
whenever在所有环境中使用?可以说我有这样的cronjob:
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
Run Code Online (Sandbox Code Playgroud)
虽然,我想让'1.day'更具动态性,例如通过管理页面中的表单更改值.
然后它可能看起来像这样:
every Constant.find(2).value, :at => '4:30 am' do
Run Code Online (Sandbox Code Playgroud)
要么
@const = Constant.find(2)
every @const.span, :at => @const.time do
Run Code Online (Sandbox Code Playgroud)
任何人都可以想出如何使这项工作?
显然,原因是我可以使用我网站上数据库中存储的值,就像消息说的那样
<%= "The next update is in less than #{@const.time}" #or something similar %>
Run Code Online (Sandbox Code Playgroud) 使用gmail帐户开发的Rails 3.2.8应用程序作为"发送地址".邮件发送工作时我的environment.rb文件包含:
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:authentication => :login,
:user_name => "accountname",
:password => "123456789"
}
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序日志中收到此消息:EOFError(到达文件末尾):当上面的代码更改为如下所示:
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "mail.company.com",
:port => 25,
:domain => "company.com",
:authentication => :login,
:user_name => "accountname",
:password => "123456789"
}
Run Code Online (Sandbox Code Playgroud)
我可以告诉您,我可以向电子邮件地址发送手动电子邮件,并在使用ThunderBird等电子邮件客户端时看到它,因此我知道accountname@company.com正常运行.
我不明白文件结束错误是如何发挥作用的.我也无法弄清楚如何获得更多信息出现在日志中.
我期待着阅读一些确定文件结束原因的建议.
Started POST "/sendInvites?locale=en&lot_id=18&user_id=17" for 99.99.99.99 at 2013-10-03 08:52:09 -0700
Processing by WaitingListsController#sendInvites as HTML
Parameters: {"authenticity_token"=>"uwz/6pW1rLPXR4gU3m3OwCmU0O3DSJ/haNM2/ai+OR8=", "locale"=>"en", "lot_id"=>"18", "user_id"=>"17"}
=======>>>> Beginning Send Invitation Process …Run Code Online (Sandbox Code Playgroud)