レーキでヘルパーメソッドを使用できますか?レーキでヘルパーを使用するにはどうすればよいですか?
答えて
はい、可能です。ヘルパーファイルを必要とするだけで、そのヘルパーをあなたのレーキファイルの中に入れるだけです(実際にヘルパーは私たちが含めることができるmixinです)。
例えば、ここで私はアプリ/ヘルパー内部application_helperファイルこれが含まれているディレクトリていますので、ここで
module ApplicationHelper
def hi
"hi"
end
end
は私のすくいファイルの内容です:
require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper
namespace :help do
task :hi do
puts hi
end
end
、ここで私の端末の結果です:
god:helper-in-rake arie$ rake help:hi
hi
lfeender6445が記載されているように、Arieの答えのようにinclude ApplicationHelper
を使用すると、タスクを含むトップレベルのスコープが汚染されます。
安全でない副作用を避けるための代替方法があります。
最初に、私たちはではなく、app/helpers
に作業ヘルパーを入れてください。 codefol.ioで"Where Do I Put My Code?"から引用するには:
Rails "helpers"は非常に具体的にビューヘルパーです。それらは自動的にビューに含まれますが、コントローラやモデルには含まれません。それが目的です。
app/helpers
はビューヘルパー向けであり、Rakeタスクはビューではないため、他の場所にタスクヘルパーを配置する必要があります。私はlib/task_helpers
をお勧めします。
lib/task_helpers/application_helper.rb
で
:あなたのRakefile
で
module ApplicationHelper
def self.hi
"hi"
end
end
またはlib/tasks
で.rake
ファイル:
require 'task_helpers/application_helper'
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
質問はもともとすくいタスクのビューヘルパーを含めについて尋ねられた場合、私はわからないんだけど、 Rakeタスクのための "ヘルパーメソッド"だけです。しかし、ビューとタスクの両方でヘルパーファイルを共有することは理想的ではありません。代わりに、で使用するヘルパーを、ビューとタスクの両方をとし、それらをビューヘルパーとタスクヘルパーの両方に含まれる別個の依存関係に移動します。
これは私のためにそれを解決しました - あなたがしたようにスコープを並べ替えるまでヘルパーメソッドに引数を渡す場合は、それを行うことができません –
私は疑問に思っていますそれを 'application_helper 'と呼ぶのは良い考えです。それは混乱の原因となる可能性があるためです。たぶん 'lib/task_helpers.rb'だけが良いでしょう。 –
それは良いと安全な方法です...ありがとう.... – prasanthrubyist
- 1. カスタムHtmlヘルパー内でHtml.EditorFor()(など)を使用するにはどうすればよいですか?
- 2. Symfonyでは、クラス内でurl_forヘルパーを使用するにはどうすればよいですか?
- 3. Razorヘルパー内でヘルパーを適切にレンダリングするにはどうすればよいですか?
- 4. モデル内でSinatraヘルパーを使用するにはどうすればよいですか?
- 5. Htmlヘルパー拡張メソッドでHtml Form Helperを使用するにはどうすればよいですか?
- 6. carrier_waveのimage_tagでlink_toヘルパーを使用するにはどうすればよいですか?
- 7. ブロックを使用してヘルパーを作成するにはどうすればよいですか?
- 8. 関連オブジェクトのIDを渡してlink_toヘルパーを使用するにはどうすればよいですか?
- 9. netzkeでヘルパーを使用するにはどうしたらいいですか?
- 10. Bosunでwin.disk.durationを使用するにはどうすればよいですか、またはカウンタタイプメトリックをダウンサンプルするにはどうすればよいですか?
- 11. HTMLをかさばったカミソリのヘルパーに置き換えるにはどうすればよいですか?
- 12. アンドロイドでplistを使用するにはどうすればよいですか?
- 13. セキュリティプロバイダをJavaで使用するにはどうすればよいですか?
- 14. ハイパーリンクでカスタムフィールドを使用するにはどうすればよいですか?
- 15. GridViewでgetSelectedView()を使用するにはどうすればよいですか?
- 16. C#でbigintを使用するにはどうすればよいですか?
- 17. ChromebookでTkinterを使用するにはどうすればよいですか?
- 18. タッチデバイスでFullCalendarを使用するにはどうすればよいですか?
- 19. ハッシュでeach_with_objectを使用するにはどうすればよいですか?
- 20. コンパクトフレームワークアプリケーションでOpenStreetMapを使用するにはどうすればよいですか?
- 21. Firefoxで「jQuery.Event」を使用するにはどうすればよいですか?
- 22. インラインデータソースバインディングでendpointUrlを使用するにはどうすればよいですか?
- 23. GWTでjava.util.Currencyを使用するにはどうすればよいですか?
- 24. GrayLog2でMongoDBを使用するにはどうすればよいですか?
- 25. バックボーンビューで「this」を使用するにはどうすればよいですか?
- 26. カーネルモードでsys_sendto()を使用するにはどうすればよいですか?
- 27. アプリケーションでflurryを使用するにはどうすればよいですか?
- 28. ブラウザでbackgroundworkerを使用するにはどうすればよいですか?
- 29. Mavenでbox2dを使用するにはどうすればよいですか?
- 30. スレッドでtrueを使用するにはどうすればよいですか?
rake内で 'include'を使用すると、誤って' Object'のスコープが汚染されます。これは、その後にインポートされたすべてのレーキタスクに同じメソッドを共有することになります。 – lfender6445
その後にインポートされたレーキタスクはどういう意味ですか?他の.rakeファイルからのレイクタスクの場合と同様に、ApplicationHelperメソッドにアクセスできますか? –
これは言われていますが、それでも十分だとは言えません。特にRailsアプリ(これはRakeを広範囲に使用しています)では本当に*これはしてはいけません。これはグローバルな 'Object'を使いこなしてしまいます。これは追跡が非常に難しい、広範囲の影響を及ぼします。ちょうどこの2時間を失った... – nrser