問題タブ [rails-engines]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails Engine の静的アセットを Rails 3.0 および Rails 3.1 で動作させるにはどうすればよいですか?
この質問に対する以前の StackOverflow の回答を読んだことがありますが、それらはいたるところにあります。静的アセット (css および js ファイル) を Rails Engine にバンドルする方法と、それらを Rails 3.0 および 3.1 で動作させる方法について、明確な答えはありますか?
ruby-on-rails - Rails 3.1 - マウント可能なエンジンを使用した開発
私は 2 つの別々のクライアント用に 2 つのアプリを開発しており、3 つ目は自分用に開発しています。3 つのアプリすべてに、アドレス帳、電子メール、およびユーザー認証があります。最後に、必要に応じてモジュールを追加 (または削除) できるように、アプリを「モジュール式」に作成したいと考えています。
Mountable Engines Railscastを見てきましたが、必要なもののように見えますが、次の点についてはまだ不明です。
- 各エンジン モジュール (ユーザー認証、電子メール、アドレス帳) を、共通のベース アプリケーションなしで個別に開発するにはどうすればよいですか?
- 別のモジュールであるユーザー認証が必要な場合、アドレス帳モジュールをどのように開発しますか?
最初にユーザー認証を開発し、それをエンジン モジュールのダミー アプリに含めると推測していますが、エンジンの名前空間と混乱しています。
私は C# のバックグラウンドを持っており、Web 開発は初めてであることに注意してください。
ruby-on-rails-3 - 2 つの Rails 3 アプリ間で DB とデータ モデルを共有するにはどうすればよいですか?
私は、ユーザーが単一のフロントエンド インターフェイスから検索およびマイニングできるように、さまざまなソースからデータを集約するプロジェクトに取り組んでいます。プロジェクトは 2 つのコンポーネントにかなりきれいに分割されます。
- さまざまなソースからデータを取得し、データベースに入力する cron トリガー (Whenever gem) コード。
- データを消費してユーザーに提示するフロントエンド コード。
コードベースを共有モデルを使用して個別のプロジェクトに分割して、問題を明確に分離したいと考えていますが、Rails 3 でそれを行う最善の方法がわかりません。
SVN または Git で共有フォルダー/サブモジュールを使用することに関するこの SO の質問を見ましたが、それは私にはあまりきれいに思えません: 2 つの Rails プロジェクト間でモデルを共有する - git サブモジュールを使用していますか?
私はJava/MVNのバックグラウンドから来ました.3つのモジュール(1つは共有され、2つはそれに依存しています)を作成し、それを1日と呼びます. その後、Maven を使用して親プロジェクトでビルドを呼び出すと、各依存プロジェクトの共有コード JAR が自動的に更新されます。
Rails Engine、Rake、および RubyGems を使用して同じことを達成できますか? それとも、それを行うためのより良い「レールの方法」がありますか?
ありがとう、
-ジェームズ
ruby-on-rails - アプリと付属のAppEnginegemが同じ名前のコントローラーを定義している場合、すべてのルートにアクセスするにはどうすればよいですか?
私はいくつかの異なるプロジェクトで使用するエンジン(私/私が働いている会社によって開発された)を持っています。Rails 3.1 w / Assetsパイプラインで動作するように変換したところ、すべてが動作しているようです...ほとんどの場合。
私の問題は、UsersController
アプリ固有のスパイスを少し使っての機能を拡張する必要があることですが、それを行うための最良の方法がわかりません。エンジンはアクションを定義しませんUsers#show
が、このアプリはそれを必要とするので、ルートファイルに追加しました:
次に、私のアプリケーションで、UsersControllerを作成しました。
次に、ビューを作成しusers/show.html.haml
ました。問題のある行の1つだけを表示するために、ビューを削除しました。
これにより、次のようなエラーが発生しますundefined method 'job_path' for #<#<Class:0x00000102d69900>:0x00000102d4ed30>
これは奇妙なことです。なぜなら、アプリの継承を作成する前は、問題なく機能していたからです。UsersController
MyEngine::UsersController
私がrake routes
コンソールで行うとき、これらの行があります:
クラス定義を次のように変更できます。
その後、リンクは正常に機能します。ただし、エンジンのコントローラーはMyEngine::UsersController
すでにから継承していApplicationController
ます。アプリにコードを入れることができApplicationController
(のようにbefore_filter
)、期待どおりに実行されるので、クラス定義が最終的にアプリにヒットすることがわかっていますApplicationController
が、job_pathヘルパーが機能しないのはなぜですか?
表示アクションを次のように変更すると、次のようになります。
エラーが発生します:
これは、実際にはjob_pathをメソッドとして認識しているため、さらに混乱しますが、どういうわけか、ルーターはすべての正しいパラメーターを使用してどこに行くかを選択していません。
私は何が間違っているのですか?エンジンコントローラーの機能を拡張する正しい方法は何ですか?ここでエンジン機能の拡張に関する質問を見ました。
そして、そのコード例に従って、クラス定義を変更して代わりに再度開くようにしましMyEngine::UsersController
たが、それでもまったく同じ結果が得られます。job_path(NUMBER)
アップデート:
さて、私は何が起こっているのか理解しました。エンジンにjob_pathルートがあり、アプリケーションにjob_pathルートがあるとします。エンジンのコントローラーを介してアクセスされたページを表示している場合は、を使用してエンジンのヘルパーを呼び出すことができjob_path
ますが、を使用してメインアプリケーションのヘルパーを呼び出すこともできますmain_app.job_path
。
同様に、アプリケーションのコントローラーの1つを介してアクセスするページを表示している場合は、でエンジンのヘルパーにアクセスし、でmy_engine.job_path
独自のアプリケーションのヘルパーにアクセスしますjob_path
。これは、のようなものがあることを前提としていますmount MyEngine::Engine => "/my_engine", :as => 'my_engine'
。
アプリケーションからエンジンコントローラーを継承すると、ルートヘルパーが完全に変更され、コントローラー/ビューのライフサイクルを通じてエンジンのコンテキストにいると見なされます。ですから、私の問題を解決するために私が本当にしなければならないのは、それを変更することだけでmain_app.job_path(3)
、それは機能します。
この解決策は少し...奇妙に感じるので、私は完全には満足していません。たぶん、私はこのページに、別の非継承ページで使用される部分を持っています。これで、リンクヘルパーは2つのページのいずれかでのみ機能しますが、両方では機能しません= \ここで何かが不足しています...?
ruby-on-rails - Rails エンジンのヘルパー
私は Rails エンジンに取り組んでいますが、ヘルパーに問題があります。
どうやらこれは既知の「問題」ですが、解決策はあまりありません。問題は、グローバルにアクセスしたい AuthenticationHelper があることですが、機能していません。
に数行追加できると読みinit.rb
ましたが、効果はないようです。
アプリケーションをエンジンで利用できるようにする最善の方法は何か考えはありますか?
編集:修正しました-engine.rb
代わりに(リンクからの)コードを入れてください。
ruby-on-rails - マウントされた Rails エンジンの名前付きルート
私はこのようにマウントする小さなレールエンジンを作っています:
この回答を使用して、エンジン内のすべてのルートが次のようになっていることを確認しました。
ただし、(エンジン内で)名前付きルート(エンジン内で定義)にリンクすると、このエラーが発生します
「rake route」を実行すると、「new_post」が名前付きパスであることを明確に確認できるため、Rails (3.1.0) がそれを理解できない理由がわかりません。どんな助けでも大歓迎です
私のconfig/route.rb(エンジン用)は次のようになります
私はそれが分離されたエンジンであることを付け加えなければなりません。ただし、main_app.root_path などのパスは正常に機能しますが、root_path は機能しません。
ruby-on-rails - レールに取り付けられたエンジン負荷経路
ヘルパーに存在するパーシャルのセットをロードする次のメソッドがあります。
私がロードするときedit.html.erb
、あなたが私のパーシャルのすべてをロードすることを期待するように、私はヘルパーを含めます:
_partial.html.erb
Engineをマウントすると、期待どおりにコントローラーを拡張できますが、enginesviews/shared/setting_editors
フォルダーに自分を含めるとヘルパーメソッドが機能しないようです。
_partial.html.erb
マウントされたエンジンに含めるファイルがRailsアプリケーションに読み込まれるように、上記のヘルパーメソッドをどのように改善できますか?
ruby-on-rails - Rails Engine ヘルパーがロードされていません
Rails エンジンを作成していますが、エンジンの app ディレクトリにある application_helper からヘルパー メソッドを自動的にロードするのに問題があります。実際、一部のコントローラーではロードされますが、他のコントローラーではロードされません。
これの原因について何か考えはありますか?
ruby-on-rails - Railsエンジン内からRails3+アプリでカスタムActiveModelバリデーターを初期化する方法
Railsエンジンからいくつかのカスタムバリデーターを読み込もうとしていますが、バリデーターが認識されないため、アプリケーションが失敗し続けます。
エンジンのバリデーターを初期化する適切な方法と時間は何ですか?
たとえば、私は持っています:
エンジンクラス内から、Engine < Rails::Engine
次のようなカスタムバリデーターを初期化するためのいくつかの異なる方法を試しました。
また、これらをカスタムモジュールに移動してロードしようとしましたが、これらのメソッドのいずれも正しく初期化/ロードされていません。
アプリケーションモデルがロードされているときはいつでも、Unknown validator: 'NullityValidator'
ruby-on-rails - Rails Engine のルートへのアクセスを制限しています...制約が機能しない
私のアプリにはRailsエンジンがあります。私のroutes.rb
ファイルへのフックは次のとおりです。
エンジンが提供する URL へのアクセスを制限しようとしているので、制約を使用してみました。
ただし、エンジンのルートには引き続きアクセスできます。念のためアプリを再起動しましたが、問題ありませんでした。何か案は?