8

cronを使用して(when gemを介して)マウント可能なエンジンモデルで直接タスクを実行することは可能ですか?マウント可能なエンジンは分離されているはずなので、cronはメインアプリから起動できないと思います。

通常のrailsアプリ内でいつでも使用でき、うまく機能しますが、エンジンスタイルの方法でタスクを実行する必要があります。

ありがとう

4

2 に答える 2

3

Rails Engineを単独で使用して、Rakeタスクやモデルの呼び出しなどのタスクを直接実行することはできません。RailsエンジンをミニRailsアプリと考えてください。マウントする親Railsアプリに機能と機能を提供します。それ自体では、エンジンは不完全です。エンジンをRailsアプリにマウントすると、起動して正しく動作するために必要なすべての構成と初期化子にアクセスできます。

マウントされたエンジンのRakeタスクは、親Railsアプリに継承されます。以下を実行するには、エンジンからのレーキタスクのリストを含める必要があります

rake -T

Railsランナーから、マウントされたRails Engineのモデル、ライブラリなども実行できます。エンジンの機能にアクセスするときは、エンジンの名前空間を使用する必要があります。エンジンからモデルにアクセスするためのRailsガイドの例を次に示します。

Blorgh::Post.find(1)
于 2012-08-30T01:52:27.220 に答える
0

Railsの設計者は、それが可能になることを意図していませんでした。マウント可能なプラグインではサポートされていないRailsのランナースクリプトに依存する場合は常に(正当な理由で、ランナーで実行するアプリケーションはありません)。別のrubyエグゼキュータ(rails console、IRBなど)を使用するように設定することでコードを実行する他の方法を見つけることは可能かもしれませんが、アプリケーションのコンテキストではないため、意図しない結果になる可能性があります。構成や環境はありません。

しかし、あなたは次のように述べています:The cron I think would not be able to start from the main app since mountable engines are supposed to be isolated、しかし私はそれをテストしました、そしてそれはそうではありません。ランナータスクの名前空間を適切に設定している限り、アプリケーションのいつでも構成ファイルがプラグインコード内の適切なタスクを見つけて、それを実行できるようになります。何らかの理由で特定のニーズに対応できない場合は、お知らせください。

于 2012-08-29T21:29:56.110 に答える