问题标签 [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 引擎中的静态资产在 Rails 3.0 和 Rails 3.1 中工作?
我已经阅读了以前 StackOverflow 对这个问题的回答,但它们都在地图上。关于如何将静态资产(css 和 js 文件)与 Rails 引擎捆绑在一起以及如何让它们在 Rails 3.0 和 3.1 中工作,是否有明确的答案?
ruby-on-rails - Rails 3.1 - 使用可安装引擎进行开发
我正在为 2 个不同的客户开发 2 个应用程序,并为我自己开发第 3 个应用程序。所有 3 个应用程序都将具有地址簿、电子邮件和用户身份验证。最后,我希望将应用程序创建为“模块化”,以便我可以根据需要添加(或删除)模块。
我看过Mountable Engines Railscast,它看起来像我需要的,但我仍然不清楚以下几点:
- 您如何在没有通用基础应用程序的情况下单独开发每个引擎模块(用户身份验证、电子邮件、地址簿)?
- 通讯录模块需要用户认证时如何开发,完全是一个单独的模块?
我猜您首先开发了用户身份验证,并将其包含在引擎模块的虚拟应用程序中,但我对引擎的命名空间感到困惑。
请注意,我来自 C# 背景,而且我是 Web 开发的新手,这可能会很有用。
ruby-on-rails-3 - 如何在两个 Rails 3 应用程序之间共享数据库和数据模型?
我正在开展一个项目,该项目涉及聚合来自各种来源的数据,以便用户可以从单个前端界面搜索和挖掘它。该项目非常干净地分为两个组件:
- cron 触发的(Whenever gem)代码从各种来源提取数据并填充数据库。
- 消费数据并将其呈现给用户的前端代码。
我想将代码库拆分为具有共享模型的单独项目,以鼓励清晰地分离关注点,但不确定如何在 Rails 3 中最好地实现这一点。
我看到了这个关于在 SVN 或 Git 中使用共享文件夹/子模块的问题,但这对我来说似乎不是很干净: 在两个 Rails 项目之间共享模型 - 使用 git 子模块?
我来自 Java/MVN 背景,如果您只创建 3 个模块(一个共享模块,两个依赖它),然后就收工了。然后使用 Maven,您可以在父项目上调用构建,它会自动更新每个依赖项目中的共享代码 JAR。
使用 Rails 引擎、Rake 和 RubyGems 可以实现同样的目标吗?还是有更好的“导轨方式”来做到这一点?
谢谢,
-詹姆士
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)
并且它可以工作。
我对这个解决方案并不完全满意,因为它感觉有点……奇怪。也许我在这个页面上有一个部分,将在一个单独的非继承页面上使用。现在链接助手将只适用于两个页面之一,但永远不会两个=\我在这里遗漏了什么......?
ruby-on-rails - Rails 引擎中的助手
我正在研究 Rails 引擎,但我的助手有问题。
显然这是一个已知的“问题”,但那里没有很多解决方案。问题是我有一个我想全局访问的 AuthenticationHelper - 但它不起作用。
我读过你可以在你的文件中添加几行,init.rb
但它似乎没有任何效果。
知道使应用程序在引擎中可用的最佳方法是什么吗?
编辑:修复它 - 只需将代码(来自链接)放入engine.rb
。
ruby-on-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
当我挂载我的引擎时,我可以像你期望的那样扩展我的控制器,但是当我将我包含在引擎views/shared/setting_editors
文件夹中时,我的辅助方法似乎不起作用。
如何改进上述辅助方法,以便将_partial.html.erb
我包含在已安装引擎中的文件加载到我的 Rails 应用程序中?
ruby-on-rails - Rails 引擎助手未加载
我正在创建一个 Rails 引擎,但在我的引擎应用程序目录中从 application_helper 自动加载帮助方法时遇到了一些问题。实际上,对于某些控制器,它们已加载,但对于其他控制器,则未加载。
知道这是什么原因吗?
ruby-on-rails - 如何在 Rails 引擎中初始化 Rails 3+ 应用程序中的自定义 ActiveModel 验证器
我正在尝试从 Rails 引擎加载一些自定义验证器,但由于无法识别验证器,我的应用程序一直失败。
在引擎中初始化验证器的正确方法和时间是什么?
例如我有:
在我的引擎类中Engine < Rails::Engine
,我尝试了几种不同的方法来初始化自定义验证器,例如:
我还尝试将这些移动到自定义模块中进行加载,但是这些方法都没有正确初始化/加载。
每当我的应用程序模型被加载时,我都会收到Unknown validator: 'NullityValidator'
ruby-on-rails - 限制对 Rails 引擎路由的访问...约束不起作用
我的应用程序中有一个 Rails 引擎。routes.rb
这是它在我的文件中的钩子:
我试图限制对引擎提供的 URL 的访问,所以我尝试使用约束:
但是引擎的路线仍然可以访问。我重新启动了我的应用程序以防万一,但这没关系。有任何想法吗?