如何从rails rake任务访问模型对象?
如果我$scheduler = Rufus::Scheduler.start_new在我的rake中初始化我的rufus调度程序,那么调度程序会保持活动状态,因为它来自rake任务吗?
namespace :jobs do
task :environment => [:environment] do
#Something cool
end
end
Run Code Online (Sandbox Code Playgroud)
这将导致循环依赖的:environment,这我只是想依靠Rails的任务environment.
如何才能正确设置?
我在这里对这位先生有类似的问题.
我一直试图通过rake任务运行黄瓜功能.我一直在标题中找到指定的错误.
这是一个完整的回溯.而我的红宝石版本.(当我尝试运行rails版本命令时,我收到"未找到命令".
$ rake features:all --trace
** Invoke features:all (first_time)
** Invoke features:watir_webdriver (first_time)
** Execute features:watir_webdriver
c:/Ruby193/bin/ruby -S bundle exec cucumber --profile watir
Using the watir profile...
No such file or directory - /dev/null (Errno::ENOENT)
c:/Ruby193/lib/ruby/1.9.1/webrick/log.rb:34:in `initialize'
c:/Ruby193/lib/ruby/1.9.1/webrick/log.rb:34:in `open'
c:/Ruby193/lib/ruby/1.9.1/webrick/log.rb:34:in `initialize'
c:/Ruby193/lib/ruby/1.9.1/webrick/log.rb:124:in `initialize'
c:/code/page-object/features/sample-app/sample_app.rb:12:in `new'
c:/code/page-object/features/sample-app/sample_app.rb:12:in `start'
c:/code/page-object/features/support/ajax_text_environment.rb:6:in `block in run'
rake aborted!
Command failed with status (1): [c:/Ruby193/bin/ruby -S bundle exec cucumbe...]
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:53:in `block in create_shell_runner'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `call'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils.rb:45:in `sh'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb:39:in `sh'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.9/lib/cucumber/rake/task.rb:104:in `run'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.9/lib/cucumber/rake/task.rb:193:in …Run Code Online (Sandbox Code Playgroud) 我是Rails的新手,所以如果我的问题没有最有意义,我会道歉.
我有一个名为的类PaymentGatewayCipher看起来像:
require 'openssl'
# Encapsulates payment gateway encryption / decryption utility functions
class PaymentGatewayCipher
class << self
def encrypt(file, options = {})
cipher = create_cipher
cipher.encrypt(cipher_key)
data = cipher.update(File.read(file))
data << cipher.final
if to_file = options[:to]
# Write it out to a different file
File.open(to_file, 'wb') do |f|
f << data
end
end
data
end
# Decrypts the given file
def decrypt(file)
cipher = create_cipher
cipher.decrypt(cipher_key)
encrypted_data = File.open(file, 'rb') {|io| io.read}
data = cipher.update(encrypted_data)
data << …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建自定义rake任务,但似乎无法使其正常工作。我的代码如下所示:
namespace :demotask do
desc "display the current environment of rake"
task :current_environment => :environment do
puts "You are running rake task in #{Rails.env} environment"
end
end
Run Code Online (Sandbox Code Playgroud)
并放置在test.rake名为lib/tasks. 就Rakefile在那里,但在控制台中运行任务时我确实收到此错误:
NameError: undefined local variable or method 'current_environment' for main:Object
我也尝试重新启动服务器。
这就是我在Rakefile中尝试做的事情:
require 'rake/clean'
CLEAN = ['coverage']
Run Code Online (Sandbox Code Playgroud)
这是我在日志中看到的:
$ rake
/code/foo/Rakefile:29: warning: already initialized constant CLEAN
/Users/foo/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/clean.rb:61: warning: previous definition of CLEAN was here
Run Code Online (Sandbox Code Playgroud)
我不喜欢这些警告..什么是正确的方法?
I have something like this:
task :fail do
exit 111
end
task :run_fail_and_succeed do
begin
Rake::Task['knapsack:fail'].invoke
rescue
exit 0
end
end
Run Code Online (Sandbox Code Playgroud)
我想运行任务:fail并处理它的退出状态。比退出0。我怎样才能做到这一点?
:fail必须在之前完成:run_fail_and_succeed。我需要一些帮助:(嗯,我需要1个参数传递给耙任务.而且我不是100%确定如何做到这一点,我已经尝试了很多东西,但没有任何实际工作.它是这个样子:
{ task :export, [:arg1] => :environment do
puts "Exporting..."
Importer.export_to_csv([:arg1]).to_i
puts "done."
end }
Run Code Online (Sandbox Code Playgroud)
然后当我在终端中运行时,'export_to_csv'方法用来获取arg:'rake export 1'或'rake export [1]'我一直得到同样的错误答案:'rake aborted!NoMethodError:nil的未定义方法`id':NilClass'
这意味着 - 他不认识这个输入.谢谢你们,
我想知道 - 是否有可能为rake任务创建私有帮助器,无论我如何尝试它们,它们最终都可以在全局范围内使用,并且可以作为任何对象的方法使用.例如:
## this is what I need
module MyRakeHelpers
def helper_1
end
def helper_2
end
end
include RakeHelpers
task :sometask do
helper_1
helper_2
end
## And this should not work:
# global scope
helper_1
"a random object".helper_1
class RandomClass
def foo
helper_1
end
end
Run Code Online (Sandbox Code Playgroud) 我在semester.rake文件中有一个rake任务.看起来像这样
namespace :db do
desc "generate semester data"
task semester: :environment do
semester = Semester.create!(name: "SummerSemseter")
semester = Semester.create!(name: "WinterSemester")
semester = Semester.create!(name: "Spring Semester")
end
end
Run Code Online (Sandbox Code Playgroud)
我将任务作为rake semester.这给了我错误
rake aborted!
Don't know how to build task 'semester' (see --tasks)
/home/john/.rvm/gems/ruby-2.2.4/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
/home/john/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `eval'
/home/john/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误以及解决方案是什么?