将具有不同名称空间的 rake 任务放在任务下的不同文件夹中是一个好主意吗?如果只有一个具有不同名称空间的文件应该怎么做?
我有一个奇怪的问题.在开发中这个问题不存在,但在生产中rake将这个错误消息抛给我"未初始化的常量程序"
"程序"是一个活动的记录模型,它就在那里,它位于模式文件中,它位于app/model文件夹中.
我执行它就像这个rake import:xml RAILS_ENV = production.可能是什么问题呢?下面是完整的堆栈跟踪
rake import:xml RAILS_ENV=production --trace
(in /usr/mobloom/www/htdocs/remindertest)
** Invoke import:xml (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute import:xml
rake aborted!
uninitialized constant Program
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:92:in `const_missing'
/usr/mobloom/www/htdocs/remindertest/lib/tasks/import_assets.rake:18
/usr/mobloom/www/htdocs/remindertest/lib/tasks/import_assets.rake:9:in `each'
/usr/mobloom/www/htdocs/remindertest/lib/tasks/import_assets.rake:9
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
Run Code Online (Sandbox Code Playgroud)
第18行:program = …
我写了一篇文章ruby gem,我希望有一个rake任务,用于将gem发布到我自己的GemInABox存储库中:http://my-gem-repo.com.
实现这一目标的最简单方法是什么?
另外,我想阻止默认发布到Rubygems.org.
对于我的Rails应用程序,我想建立一个耙的任务,将用10填充数据库invoices的每个user:
def make_invoices
User.all.each do |user|
10.times do
date = Date.today
i = user.invoices.create!(:number => user.next_invoice_number,
:date => date += 1.year)
i.save
end
end
end
Run Code Online (Sandbox Code Playgroud)
我如何增加date一年?
我已经建立了一个rake任务 -
# SET RAKE TASK NAMESPACE
namespace :db do
# RAKE TASK DESCRIPTION
desc "Fetch property information and insert it into the database"
# RAKE TASK NAME
task :insert_properties do
# REQUIRE LIBRARIES
require 'nokogiri'
require 'open-uri'
# OPEN THE XML FILE
mits_feed = File.open("app/assets/xml/mits.xml")
# OUTPUT THE XML DOCUMENT
doc = Nokogiri::XML(mits_feed)
# FIND PROPERTIES OWNED BY NORTHSTEPPE AND CYCLE THORUGH THEM
doc.xpath("//Property/PropertyID/Identification[@OrganizationName='northsteppe']").each do |property|
# GATHER EACH PROPERTY'S INFORMATION
information = {
"street_address" => property.xpath("/Address/AddressLine1/text()"),
"city" => …Run Code Online (Sandbox Code Playgroud) 我想在rails应用程序中运行资产预编译任务,因为我有许多依赖项将更改代码,在这种情况下,无论何时更改我都需要运行脚本,因为我无法让服务器访问它们所以我提供从他们自己的GUI可以运行脚本,因此,我已经构建了UI来运行任务与一些参数,如
system("Template='#{params[:template]}' Theme='#{params[:theme]}' rake assets:precompile)
Run Code Online (Sandbox Code Playgroud)
我从UI获取了两个值(params [:template],params [:theme]).我想在另一个路径(站点路径)中运行此任务的另一个意思是管理端UI是那个任务应该在Site目录中执行,
if(params[:theme_script] == "true")
template=Template.where(:name => params[:template]).first
if template
theme = template.themes.where(:name => params[:theme]).first
if theme
# Dir.chdir "#{THEMEPATH}"do
# `Template="#{template.name}" Theme="#{theme.name}" rake assets:precompile`
# end
# sleep 10
# system("#{Rails.root.to_s}/lib/shell_script.sh")
# RunRake.run_rake(template.name,theme.name)
# Dir.chdir "#{THEMEPATH}"do
# Rake::Task['assets:precompile'].invoke
# end
ENV["Template"] = template.name
ENV["Theme"] = theme.name
precompile_task = "bundle exec rake assets:precompile --trace 2>&1"
output = Dir.chdir(THEMEPATH) { %x[ #{precompile_task} ] }
flash[:notice] = "Asset created successfully"
else
flash[:notice] = "U have enter …Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails rake-task ruby-on-rails-3.1 asset-pipeline
我是Rails的新手,我正在尝试将我的第一个rails应用程序上传到Heroku.
我已经在Heroku中安装了我的应用程序,但是当我尝试创建数据库时出现此错误:
vagrant@rails-forge:~/apps/betsman$ heroku run rake db:migrate --app betsman
Running `rake db:migrate` attached to terminal... up, run.3809
: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这真的不告诉我任何事情.所以我检查了Heroku日志,并得到以下错误:
:没有这样的文件或目录00:00 app [web.1]:/ usr/bin/env:ruby
vagrant@rails-forge:~/apps/betsman$ heroku logs
2014-06-17T02:23:23.680853+00:00 heroku[api]: Enable Logplex by personal_email
2014-06-17T02:23:23.680979+00:00 heroku[api]: Release v2 created by personal_email
2014-06-17T02:25:22.844616+00:00 heroku[api]: Starting process with command `echo $RAILS_ENV` by personal_email
2014-06-17T02:38:43.002052+00:00 heroku[api]: Attach HEROKU_POSTGRESQL_CRIMSON resource by personal_email
2014-06-17T02:38:43+00:00 heroku[slug-compiler]: Slug compilation finished
: No such file or directory00:00 app[web.1]: /usr/bin/env: ruby
2014-06-17T02:38:49.957936+00:00 heroku[web.1]: State changed from …Run Code Online (Sandbox Code Playgroud) 我正在学习rails并逐步使用lynda视频系列.我试过耙子.它给出了以下错误.
$ rake generate migration DoNothingYet
rake aborted!
Don't know how to build task 'generate'
Run Code Online (Sandbox Code Playgroud)
我用--trace来找到问题.但是,它没有指出错误.
$ rake generate migration DoNothingYet --trace
rake aborted!
Don't know how to build task 'generate'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task_manager.rb:62:in `[]'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:149:in `invoke_task'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `each'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:100:in `top_level'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:78:in `block in run'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/Users/boss/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/Users/boss/.rbenv/versions/2.2.2/bin/rake:33:in `<main>'
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 rake 任务,它的功能是从其他网页获取信息。为此,我使用 open-uri 和 nokogiri。我已经在开发中进行了测试并且它可以完成工作,但是随后我部署到生产服务器并失败了。
这是代码:
require 'open-uri'
require 'nokogiri'
desc 'recover eventos llerena'
task recover_eventos_llerena: :environment do
enlaces = []
# Getting index and all links
url = open(URI.parse("https://llerena.org/eventos/lista"))
page = Nokogiri::HTML(url)
page.css("a.fusion-read-more").each do |line|
enlaces.push(line.attr('href'))
end
enlaces = enlaces.uniq
#Inspecting everyone of them
enlaces.each do |link|
url = open(URI.parse(link))
page = Nokogiri::HTML(url)
title = page.css("h1").text
if Evento.find_by_titulo(title) == nil
description = page.css(".tribe-events-single-event-description.tribe-events-content.entry-content.description p").text
date = page.css(".tribe-events-abbr").attr('title')
image = page.css(".size-full").attr('src')
Evento.create!(
titulo: title,
remote_imgevento_url: image,
info: description,
fecha: …Run Code Online (Sandbox Code Playgroud) 我正在使用 Heroku 的 Scheduler 插件以预定的时间间隔在我的应用程序中运行作业,就像传统服务器环境中的 cron 一样。这些任务相当琐碎,因为它们只是将一个 sidekiq 工人排队。但是,正如您在下面的照片中看到的,由于:update_job_posts某种原因无法在 4:30UTC 运行。
我不能以这种方式将这两项工作结合起来,还是需要单独运行?
如果我通过heroku run它运行任务。heroku run用于执行您的作业,因此您可以放心,如果它与 heroku run 一起工作,它将在调度程序中工作。
$ heroku run rake scheduler:update_job_posts
Running rake scheduler:update_job_posts on ? agile-temple-76502... up, run.6604 (Free)
Updating Job feed...
I, [2018-06-06T04:40:50.341411 #4] INFO -- : [ActiveJob] Enqueued JobFeedImportJob (Job ID: e3b9a0ed-aacb-45af-84f9-ef02acfeb85e) to Sidekiq(default)
I, [2018-06-06T04:40:50.344400 #4] INFO -- : [ActiveJob] Enqueued RemoteFeedImportJob (Job ID: b965853d-adb3-46ee-b48d-f19306ce9d2a) to Sidekiq(default)
done.
Run Code Online (Sandbox Code Playgroud)
此外,heroku logs --tail显示正在运行的其他任务:
heroku[scheduler.5009]: Starting process …Run Code Online (Sandbox Code Playgroud)