5

エンジンに追加した gem 依存関係から JavaScript を使用する Rails エンジンを作成しようとしています。ただし、エンジンの application.js に次の行を追加すると、「ファイル 'fullcalendar' が見つかりませんでした」というメッセージが表示され続けます。

//= require fullcalendar

この行は、gem 依存関係から Rails エンジンに JavaScript をロードしています。

この同じ行は、gem が通常の Rails アプリ (エンジンではない) にインストールされている場合に機能します。ここで何が欠けていますか?エンジンは別のエンジン/gem から JavaScript をロードできますか?

更新: 自分で調査したところ、スプロケットがエンジン内の JavaScript のみを検索することが問題である可能性があります。gem の依存関係は、エンジンではなく親アプリのベンダー/キャッシュにインストールされるため、//require fullcalendar はエンジン内で検索され、fullcalendar の JavaScript が親アプリケーションにあるため、失敗します。

私を混乱させるのは、親アプリケーションの gemfile に fullcalendar を明示的に含めると、エンジンでアクセスできないことです。これは私には意味がありません。どちらの場合も、完全なカレンダー gems の JavaScript は親アプリにありますが、動作は異なります。宝石を 2 つの場所に含めることは、私には魅力的ではなく、適切な解決策とは思えません。何かご意見は?

4

3 に答える 3

1

私は過去にこれにいくつかの問題を抱えていました。

App > Engine 1 > Engine 2

エンジン1とエンジン2はアプリで正常に動作しました。エンジン1でダミーアプリを作成して、エンジン2の機能をテストしましたが、これも正常に機能しました。しかし、エンジン1をアプリに入れても、まったく機能しませんでした。

ここでの私の大きな間違いは、Appにエンジン1のみを含めることでした。エンジン2も含める必要があります。継承はGemfileに対しては機能せず、依存関係に対してのみ機能します。

于 2012-11-09T09:52:30.797 に答える
1

パーティーに少し遅れましたが、最近同じ問題がありました。これは、ソリューションhttp://grantrklinsing.com/articles/2013/01/10/adding-3rd-party-assets-to-a-rails-gem.htmlを説明する私の投稿です。うまくいかなかった場合に役立つことを願っています。

于 2013-01-11T05:02:14.900 に答える
0

使用している fullcanendar gem にはインストーラーが付属していますか? 一部の gem には、モデルの移行、アセット、ビュー、構成ファイルなどのインストーラーが付属しています。

fullcalendar-rails gemを参照している場合は、コマンドを使用して実行する必要があるインストーラーが付属しています rails g fullcalendar:install

gem にインストーラーが付属していない場合は、実行して gem を手動でローカル マシンにクローンできます。git clone gem_github_repository_url_here.gitこれにより、gem のフォルダーをナビゲートできるようになり、gem が使用する任意のアセットに直接アクセスできます。 Rails アプリケーションにコピーします。

于 2012-11-09T00:58:55.933 に答える