问题标签 [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.

0 投票
1 回答
129 浏览

ruby-on-rails - 如何让 Rails 引擎中的静态资产在 Rails 3.0 和 Rails 3.1 中工作?

我已经阅读了以前 StackOverflow 对这个问题的回答,但它们都在地图上。关于如何将静态资产(css 和 js 文件)与 Rails 引擎捆绑在一起以及如何让它们在 Rails 3.0 和 3.1 中工作,是否有明确的答案?

0 投票
1 回答
431 浏览

ruby-on-rails - Rails 3.1 - 使用可安装引擎进行开发

我正在为 2 个不同的客户开发 2 个应用程序,并为我自己开发第 3 个应用程序。所有 3 个应用程序都将具有地址簿、电子邮件和用户身份验证。最后,我希望将应用程序创建为“模块化”,以便我可以根据需要添加(或删除)模块。

我看过Mountable Engines Railscast,它看起来像我需要的,但我仍然不清楚以下几点:

  1. 您如何在没有通用基础应用程序的情况下单独开发每个引擎模块(用户身份验证、电子邮件、地址簿)?
  2. 通讯录模块需要用户认证时如何开发,完全是一个单独的模块?

我猜您首先开发了用户身份验证,并将其包含在引擎模块的虚拟应用程序中,但我对引擎的命名空间感到困惑。

请注意,我来自 C# 背景,而且我是 Web 开发的新手,这可能会很有用。

0 投票
1 回答
433 浏览

ruby-on-rails-3 - 如何在两个 Rails 3 应用程序之间共享数据库和数据模型?

我正在开展一个项目,该项目涉及聚合来自各种来源的数据,以便用户可以从单个前端界面搜索和挖掘它。该项目非常干净地分为两个组件:

  1. cron 触发的(Whenever gem)代码从各种来源提取数据并填充数据库。
  2. 消费数据并将其呈现给用户的前端代码。

我想将代码库拆分为具有共享模型的单独项目,以鼓励清晰地分离关注点,但不确定如何在 Rails 3 中最好地实现这一点。

我看到了这个关于在 SVN 或 Git 中使用共享文件夹/子模块的问题,但这对我来说似乎不是很干净: 在两个 Rails 项目之间共享模型 - 使用 git 子模块?

我来自 Java/MVN 背景,如果您只创建 3 个模块(一个共享模块,两个依赖它),然后就收工了。然后使用 Maven,您可以在父项目上调用构建,它会自动更新每个依赖项目中的共享代码 JAR。

使用 Rails 引擎、Rake 和 RubyGems 可以实现同样的目标吗?还是有更好的“导轨方式”来做到这一点?

谢谢,

-詹姆士

0 投票
2 回答
1131 浏览

ruby-on-rails - 当应用程序和包含的 AppEngine gem 定义具有相同名称的控制器时,如何访问所有路由?

我有一个引擎(由我/我工作的公司开发),我们在几个不同的项目中使用它。我刚刚将它转换为使用带有资产管道的 rails 3.1 并且一切似乎都在工作......在大多数情况下。

我的问题是我需要UsersController使用一些特定于应用程序的香料来扩展 的功能,但我不确定最好的方法。引擎没有定义Users#show动作,但是这个应用确实需要它,所以我在路由文件中添加了:

然后在我的应用程序中创建了 UsersController:

然后我做了一个users/show.html.haml视图,我把它剥离了,只显示一个问题行:

这给了我一个错误,上面写着undefined method 'job_path' for #<#<Class:0x00000102d69900>:0x00000102d4ed30>

这很奇怪,因为我让我的应用程序UsersController继承MyEngine::UsersController它之前工作得很好。

当我rake routes在控制台中进行操作时,有以下几行:

我可以将类定义更改为:

然后链接工作得很好。但是,引擎的控制器MyEngine::UsersController已经继承自ApplicationController. 我可以将代码放入我的应用程序ApplicationController(如 a before_filter),它会按预期运行,所以我知道我的类定义最终会影响我的应用程序ApplicationController,为什么 job_path 助手不起作用?

当我将显示操作更改为:

我得到错误:

这进一步让我感到困惑,因为现在它实际上确实将 job_path 识别为一种方法,但不知何故,路由器没有使用所有正确的参数选择去哪里。

我究竟做错了什么?扩展引擎控制器功能的正确方法是什么?我在这里看到了扩展引擎功能问题。

并遵循该代码示例,将我的类定义更改为重新打开MyEngine::UsersController,但我仍然得到完全相同的结果job_path(NUMBER)

更新:

好的,我有点弄清楚发生了什么。假设您的引擎有一个 job_path 路由,而您的应用程序有一个 job_path 路由。如果您在通过引擎控制器访问的页面上,您可以使用 调用引擎的助手job_path,但您也可以使用 调用主应用程序的助手main_app.job_path

同样,如果您在通过应用程序控制器之一访问的页面上,您可以my_engine.job_path使用job_path. 这是假设你有类似的东西mount MyEngine::Engine => "/my_engine", :as => 'my_engine'

当您从应用程序继承引擎控制器时,它会完全改变您的路由助手,使其认为您在控制器/视图生命周期中处于引擎的上下文中。所以要解决我的问题,我真正需要做的就是改变它main_app.job_path(3)并且它可以工作。

我对这个解决方案并不完全满意,因为它感觉有点……奇怪。也许我在这个页面上有一个部分,将在一个单独的非继承页面上使用。现在链接助手将只适用于两个页面之一,但永远不会两个=\我在这里遗漏了什么......?

0 投票
2 回答
5697 浏览

ruby-on-rails - Rails 引擎中的助手

我正在研究 Rails 引擎,但我的助手有问题。

显然这是一个已知的“问题”,但那里没有很多解决方案。问题是我有一个我想全局访问的 AuthenticationHelper - 但它不起作用。

读过你可以在你的文件中添加几行,init.rb但它似乎没有任何效果。

知道使应用程序在引擎中可用的最佳方法是什么吗?

编辑:修复它 - 只需将代码(来自链接)放入engine.rb

0 投票
3 回答
23125 浏览

ruby-on-rails - 已安装的轨道引擎中的命名路线

我正在制作一个像这样安装的小型导轨引擎:

使用这个答案,我已经验证引擎中的所有路由都应该是:

但是 - 当我(在引擎内部)链接到命名路由(在引擎内部定义)时,我收到此错误

运行“rake route”清楚地验证“new_post”应该是一个命名路径,所以我不知道为什么 Rails (3.1.0) 无法弄清楚。欢迎任何帮助

我的 config/route.rb (用于引擎)看起来像这样

我应该补充一点,它是独立的引擎。但是 main_app.root_path 之类的路径可以正常工作 - 而 root_path 则不行

0 投票
1 回答
552 浏览

ruby-on-rails - 导轨安装的发动机负载路径

我有以下方法可以加载一组位于助手中的部分:

当我加载我edit.html.erb的时,我会包含帮助程序,因为您希望加载我的所有部分:

_partial.html.erb当我挂载我的引擎时,我可以像你期望的那样扩展我的控制器,但是当我将我包含在引擎views/shared/setting_editors文件夹中时,我的辅助方法似乎不起作用。

如何改进上述辅助方法,以便将_partial.html.erb我包含在已安装引擎中的文件加载到我的 Rails 应用程序中?

0 投票
1 回答
520 浏览

ruby-on-rails - Rails 引擎助手未加载

我正在创建一个 Rails 引擎,但在我的引擎应用程序目录中从 application_helper 自动加载帮助方法时遇到了一些问题。实际上,对于某些控制器,它们已加载,但对于其他控制器,则未加载。

知道这是什么原因吗?

0 投票
2 回答
1864 浏览

ruby-on-rails - 如何在 Rails 引擎中初始化 Rails 3+ 应用程序中的自定义 ActiveModel 验证器

我正在尝试从 Rails 引擎加载一些自定义验证器,但由于无法识别验证器,我的应用程序一直失败。

在引擎中初始化验证器的正确方法和时间是什么?

例如我有:

在我的引擎类中Engine < Rails::Engine,我尝试了几种不同的方法来初始化自定义验证器,例如:

我还尝试将这些移动到自定义模块中进行加载,但是这些方法都没有正确初始化/加载。

每当我的应用程序模型被加载时,我都会收到Unknown validator: 'NullityValidator'

0 投票
1 回答
888 浏览

ruby-on-rails - 限制对 Rails 引擎路由的访问...约束不起作用

我的应用程序中有一个 Rails 引擎。routes.rb这是它在我的文件中的钩子:

我试图限制对引擎提供的 URL 的访问,所以我尝试使用约束:

但是引擎的路线仍然可以访问。我重新启动了我的应用程序以防万一,但这没关系。有任何想法吗?