草庐IT

任务计划

全部标签

ruby-on-rails - Rails App 在后台运行长时间任务的最佳实践?

我有一个Rails应用程序,不幸的是,在向Controller发出请求后,它必须进行一些需要一段时间的处理。在Rails中为长时间运行的任务或请求提供反馈或进度的最佳实践是什么?这些Controller方法通常持续60秒以上。我不关心客户端...我计划每隔一秒左右发出一个Ajax请求并显示一个进度指示器。我只是不确定Rails的最佳实践,我要创建一个额外的Controller吗?我能做点什么聪明的事吗?我希望答案集中在仅使用Rails的服务器端。预先感谢您的帮助。编辑:如果重要的话,http请求是针对PDF的。然后我让Rails与Ruport一起生成这些PDF。问题是,这些PDF非常大

ruby - 为什么 Rake 不能连续调用多个任务?

我有一个Rake任务,我在下面进行了简化。我在Windows上使用Ruby1.9。也许您想猜测调用下面的Rake任务“list_all_levels”的结果?应该是:"Hellolevel1""Hellolevel2""Hellolevel3"但由于我不知道的原因,它只打印“Hellolevel1”然后停止。也就是说,它总是只调用第一个任务。如果我更改第一行以传递参数“42”,它将打印“Hellolevel42”然后停止。我想知道为什么它不调用任务3次并打印所有3行?有什么方法可以让它按照我的预期工作吗?task:list_all_levels=>[]doRake::Task[:lis

ruby - 在 rake 任务中提问

我有一个从另一个rake任务调用的rake任务。在这个rake任务中,我需要询问用户一些文本输入,然后根据答案继续,或者停止一切继续(包括调用rake任务)。我该怎么做? 最佳答案 task:input_testdoinput=''STDOUT.puts"Whatistheairspeedvelocityofaswallow?"input=STDIN.gets.chompraise"bah,humbug!"unlessinput=="anafricanoreuropeanswallow?"endtask:blah_blah=>:in

ruby-on-rails - rake 任务中的 def block

我通过以下rake任务获得了main:Object的未定义局部变量或方法“address_geo”。它有什么问题?includeGeokit::Geocodersnamespace:geocodedodesc"Geocodetogetlatitude,longitudeandaddress"task:all=>:environmentdo@spot=Spot.find(:first)if@spot.latitude.blank?&&!@spot.address.blank?putsaddress_geoenddefaddress_geoarr=[]arr 最

ruby-on-rails - 在 rake 任务期间关闭观察者的简单方法?

我在我的应用中使用了restful_authentication。我正在使用rake任务创建一组默认用户,但每次我运行任务时都会发送一封激活电子邮件,因为观察者与我的用户模型相关联。我在创建用户时设置了激活字段,因此不需要激活。有人知道在运行rake任务时绕过观察者的简单方法,这样当我保存用户时就不会发送电子邮件吗?谢谢。 最佳答案 Rails3.1终于为此提供了API:http://api.rubyonrails.org/v3.1.0/classes/ActiveModel/ObserverArray.html#method-i-

ruby-on-rails - 如何找到 rake 任务的源文件?

我知道您可以通过键入查看所有可能的佣金任务rake-T但我需要知道任务的具体作用。从输出中,如何找到实际具有任务的源文件?例如,我正在尝试查找db:schema:dump任务的源。 最佳答案 我知道这是一个老问题,但无论如何:rake-W这是在rake0.9.0中引入的。http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.htmlSupportforthe–where(-W)flagforshowingwhereataskisdefined.

ruby-on-rails - 我如何在 rake 任务中强制使用 RAILS_ENV?

我有这个小佣金任务:namespace:dbdonamespace:testdotask:resetdoENV['RAILS_ENV']="test"Rake::Task['db:drop'].invokeRake::Task['db:create'].invokeRake::Task['db:migrate'].invokeendendend现在,当我执行时,它将忽略我尝试硬编码的RAILS_ENV。我如何使这个任务按预期工作 最佳答案 对于这个特定的任务,您只需要更改数据库连接,正如Adam指出的那样,您可以这样做:namesp

ruby - 如何明确地使 ruby​​ rake 中的任务失败?

假设我有一个这样的rakefile:file'file1'=>some_dependenciesdosh'externaltoolIdonothavecontrolover,whichsometimesfailtocreatethefile'???endtask:default=>'file1'doputs"everything'sOK"end现在,如果我不放置任何内容来代替???,即使外部工具无法生成文件,我也会收到OK消息。什么是通知rake的正确方法,'file1'任务失败了,它应该中止(希望呈现一个有意义的消息——比如哪个任务失败了)——我现在唯一能想到的就是在那里引发异常,但

ruby - 如何获取当前rake任务的PID?

我将收割机线放入rake任务中,以杀死一些额外生成的ruby​​任务,因为它们有时会不知何故爬上来。system"psaux|grep'namespace:taskname'|grepruby|grep-vgrep|awk'{print$2}'|xargskill-9;echo'Reapedoldnamespace:tasknameprocesses.'"我想在其中添加grep-v$PID_OF_CURRENT_TASK以确保我不会终止当前正在运行的任务。我如何获得该PID? 最佳答案 您可以使用Process.pid在Ruby中获

ruby-on-rails - 从迁移中执行 Rake 任务?

我有一个Rake任务将配置数据从文件加载到数据库中,是否有正确的ruby​​/rails方法在迁移时调用它?我的目标是同步我的团队数据库配置,无需广播然后运行任务lalaladefself.upchange_table:fis_situacao_fiscaldo|t|t.remove:mostrar_enderecot.rename:serie,:modeloendFaturamento::Cfop.destroy_all()#performrakehere!end更新我现在的工作方式和工作方式:system('rakesistema:load_datafile=faturamento