rakeタスクの後にRSpecのレーキ作業時に発生する値を保持Iは、次のようなクラスを有する
RSpec::Core::RakeTask.new("rspec-#{spec}".to_sym) do |task|
task.pattern = spec
end
desc "do stuff"
task spec do
Rake::Task["rspec-#{spec}".to_sym].invoke
Foo.run(spec)
end
私はspec
タスクをレーキで実行しています。
私はmethod?
定義でputs Foo.variable
をすれば、私は"rspec-#{spec}".to_sym
のためのRSpecのサブタスクの間にFoo.variable
ハッシュが正確かつ完全に私が期待どおりに移入されていることがわかります。ただし、Foo.run
がrspec rakeタスクの後に実行されるとすぐに、Foo.variable
ハッシュは空になります。 rspec rakeタスク中に生成された値をFoo.run
メソッドに転送または保持するためのさまざまな方法を試しました。上記のコードは、基本的にそれぞれの試みの後に返すテンプレートです。
その後に実行される別のメソッドに対して、rspec rakeタスク中に変数に割り当てられた値を保持する機能をどのようなアルゴリズムで利用できますか?
class Foo
@@variable = {}
def self.variable
@@variable
end
def self.run(file)
# do stuff
end
end
と同じ問題:
が持つクラス変数の提案をしようとしました。
これは、クラスの非常に特殊な定義です。インスタンスを使用している場合、 'initialize'はどこにありますか?そうでない場合は、['cattr_accessor'](http://stackoverflow.com/questions/3002247/cattr-accessor-outside-of-rails)を使って定義してください。 – tadman
私はそのクラスのインスタンスがありません。私はそれを聞いたことがないので、 'cattr_accessor'をgoogleしました。なぜそれがレールであるのかを知りました。これはちょうどルビーです。 –
インスタンスを持たないクラスがあれば、代わりに 'module'が必要です。 'mattr_accessor'は' attr_accessor'に似ていますが、モジュールには似ています。これらはActiveSupportにありますが、スタンドアロンバージョンも利用できます。 – tadman