Tag: rake

为所有任务耙自定义参数?

我想传递一个参数rake独立于我运行的任务。 例如: rake my_arg=foo rake my_arg=foo :install rake my_arg=foo :upgrade rake my_arg=foo :bar 有没有办法做到这一点?

Rails 3.1引擎迁移不起作用

我正在创建一个带有迁移的rails 3.1引擎。 rake db:migration在该引擎内部和主机应用程序内正常工作。 但是我需要将这个引擎包含在另一个rails引擎中。 第二个引擎包含用于测试的虚拟应用程序,我添加到该虚拟应用程序的application.rb这一行: require ‘my_engine’ 在控制台中,我可以看到第一个引擎的类。 rake -T 给我app:my_engine_engine:安装:迁移任务,但是当我运行这个任务时 rake app:my_engine_engine:install:migrations 我收到这个错误: rake aborted! Don’t know how to build task ‘railties:install:migrations’ Tasks: TOP => app:my_engine_engine:install:migrations (See full trace by running task with –trace) 任何人都可以帮我解决这个问题吗?

在远程服务器上执行rake任务

生产环境的物理体系结构包括多个执行不同作业的机器(rake任务),所有这些机器都在同一个数据库中。 其中一个作业会对表执行大量UPDATE ,如果其他作业正在运行,通常会返回postgres死锁。 我已经有一个rake任务来优雅地停止其他作业,但我只能从本地机器上执行它。 我想要实现的是: task :big_update => :environment do stop_tasks_on_another_servers # do the SQL UPDATE … end stop_tasks_on_another_servers应该在其他服务器上执行rake task 。 我最好的尝试是使用https://github.com/capistrano/sshkit gem。 与Capistrano使用它相同,但我仍然在这里错过了一步。 我在生产机器的rails控制台上尝试以下操作: require ‘sshkit/dsl’ hosts = [‘machine1’, ‘machine2’] on hosts do within “/home/me/project/current” do with rails_env: :production do rake “stop_tasks” end end end 但它返回: INFO [70a0610a] Running /usr/bin/env rake stop_tasks on machine1 […]

Rails 3.1:如何仅为Web应用程序运行初始化程序(rails server / unicorn / etc)

我的webapp需要加密其会话数据。 我设置的是: config/initializers/encryptor.rb: require ‘openssl’ require ‘myapp/encryptor’ MyApp::Encryptor.config[ :random_key ] = OpenSSL::Random.random_bytes( 128 ) Session.delete_all app/models/session.rb: require ‘attr_encrypted’ class Session proc { MyApp::Encryptor.config[ :random_key ] }, :marshal => true # Rest of model stuff end 一切都很好,并保证会话数据安全。 这是问题所在:当我运行自定义rake任务时,它会加载初始化程序并清除所有会话。 不好! 我可以在初始化程序中放置什么来确保它仅用于webapp初始化? 或者,我可以在初始化程序中添加什么来使其不用于rake任务? 更新:好的,我现在所做的是添加MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE到我的.rake文件。 然后在我的初始化程序中我做: unless defined?( […]

Rails 3.1 / rake – 没有队列的特定日期任务

我想让我的用户可以选择在特定的(用户指定的)时间向他们发送他们的帐户统计信息的每日摘要…. 让我们说下面的模型: class DailySummery < 10:00 (hour) # last_sent_at # => Time of the last sent summary end 现在是否有最佳做法如何通过电子邮件将此帐户摘要发送到特定时间? 目前我有一个无限的rake任务运行,它会永久检查电子邮件是否可用于发送,我想把每日总和生成并发送到这个rake任务。 我有一个想法,我可以使用以下伪代码解决这个问题: while true User.all.each do |u| u.generate_and_deliver_dailysummery if u.last_sent_at < Time.now – 24.hours end sleep 60 end 但我不确定这是否有一些隐藏的警告…… 注意:我不想使用像resq或redis之类的队列或类似的东西! 编辑:添加睡眠(已经在我的脚本中) 编辑:这是一项时间关键服务(交易费率通知)所以它应该尽可能快。 这就是为什么我不想使用队列或基于作业的系统的背景。 我使用Monit来管理这个rake任务,这个工作非常好。

如何运行所有rake任务?

刚刚安装gemhttps://github.com/javan/whenever运行我的rake任务,这是nokogiri / feedzilla依赖的抓取任务。 例如我的任务叫做grab_bbc,grab_guardian等 我的问题 – 当我更新我的网站时,我会不断向scheduler.rake添加更多任务。 我应该在config / schedule.rb中编写什么来使所有rake任务运行,无论它们被称为什么? 这样的东西会起作用吗? every 12.hours do rake:task.each do |task| runner task end end 使用RoR 4是Cron的新手。

如何从rake文件中运行ruby类?

我想从sample.rake文件中运行ruby类。 考虑myruby.rb是一个ruby文件。 我想从像ruby myruby.rb这样的ruby myruby.rb运行它

如何使用非rake参数调用rake

我有一个rake任务创建图表: task :diagram do `rake erd filetype=dot disconnected=true` end 执行此任务非常慢,我想这是因为在嵌套的rake-invoke语句中,整个rails环境再次加载。 我想用Rake::Task[‘…’].invoke 。 但是错误的任务有一些非rake争论( filetype=dot等),它们似乎不适用于invoke方法。 有没有办法将这些参数传递给rake,以便我可以使用正确的rake调用语法。

奇怪的rake db:迁移输出

为什么rake db:migrate运行Execute db:schema:dump我的输出全部搞砸了(显示SQL)。 看起来像这样: ActiveRecord::SchemaMigration Load (0.5ms) SELECT “schema_migrations”.* FROM “schema_migrations” (3.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete FROM pg_constraint c JOIN pg_class t1 ON c.conrelid = t1.oid JOIN pg_class t2 ON c.confrelid = t2.oid JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] […]

在Rakefile中设置rspec2任务

我有一个看起来像这样的Rakefile: require ‘rspec/core/rake_task’ desc “Run all RSpec tests” RSpec::Core::RakeTask.new(:spec) 这不行。 例如,如果我尝试运行“rake -T”,我得到: code/projects/bellybuster[master]% rake -T –trace (in /Users/craig/code/projects/bellybuster) rake aborted! no such file to load — rspec/core/rake_task /Users/craig/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require’ /Users/craig/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require’ /Users/craig/code/projects/bellybuster/Rakefile:1:in `’ /Users/craig/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2383:in `load’ 有什么想法吗? 万一这可能对Gemfile有帮助: source :rubygems gemspec 哦和一些版本: Ruby:1.9.2p180 耙子:0.8.7 Bundler:1.0.13 RubyGems:1.7.2