5

我正在尝试创建一个 rails 引擎,它将使用我添加到引擎中的 gem 依赖项中的 javascript。但是,当我在 application.js 中为我的引擎添加以下行时,我不断收到“找不到文件 'fullcalendar'”:

//= require fullcalendar

此行正在将 gem 依赖项中的 javascript 加载到 rails 引擎中。

当 gem 安装在普通的 rails 应用程序(而不是引擎)上时,同一行将起作用。我在这里想念什么?引擎可以从另一个引擎/gem 加载 javascript 吗?

更新: 我自己研究的问题可能是 sprockets 只在引擎内寻找 javascript。gem 依赖项安装到父应用程序的供应商/缓存中,而不是引擎因此 //require fullcalendar 失败,因为它正在引擎中查找,并且用于 fullcalendar 的 javascript 在父应用程序中。

让我感到困惑的是,如果我在父应用程序 gemfile 中明确包含 fullcalendar,那么我就无法在引擎中访问它。这对我来说没有意义。在这两种情况下,完整的日历 gems javascript 都在父应用程序中,但行为不同。在两个地方包含宝石对我来说没有吸引力,而且似乎不是一个合适的解决方案。有什么想法吗?

4

3 回答 3

1

I had some trouble with this in the past.

App > Engine 1 > Engine 2

Engine 1 and Engine 2 worked fine on the app. I created a dummy app in Engine 1 to test Engine 2's functionality, also worked fine. But when I put Engine 1 in App it didn't work at all.

My big mistake here was only including Engine 1 in App, Engine 2 has to be included as well! Inheritance does not work for Gemfiles, just dependencies.

于 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 回答