问题标签 [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 引擎。控制器、视图和模型是通过插件中的简单生成器生成的。生成器还为模型表创建迁移。
我现在面临的问题是,在对插件模型(即表结构)进行任何更新时,我都必须更新迁移。此外,我必须更新所有使用该插件的应用程序中的插件。然后 - 我必须重新生成迁移并使用更新的时间戳重新重新运行它,这迫使我不为插件模型生成任何自定义迁移(即为特定于应用程序的行为调整表)。
您能否分享有关如何在插件中管理迁移的任何想法?特别是在需要更新要生成的迁移模板的情况下。
ruby-on-rails - Ruby on Rails 3 - 为每个请求重新加载 lib 目录
我正在为 rails 3 应用程序创建一个新引擎。你可以猜到,这个引擎在我的应用程序的 lib 目录中。
但是,我在开发它时遇到了一些问题。确实,每次更改引擎中的某些内容时,我都需要重新启动服务器。
有没有办法避免这种情况?
我可以强制 rails 完全重新加载 lib 目录或特定文件以及他对每个请求的要求吗?
谢谢你的帮助 :)
ruby-on-rails - Rails 3.0 引擎 - 在 ActionController 中执行代码
我正在将我的 Rails 插件升级为可与最新 3.0RC1 版本一起使用的引擎,但在找出扩展ActionController
. 我已经在 SO 上看到了 DHH 的这篇文章和这个问题,但我的问题更多是关于如何在ActionController
.
例如,我需要在我的引擎控制器中调用以下命令:
我知道如何正确地包含我的两个私有函数,但我找不到让它正确调用helper
,before_filter
和after_filter
.
我将不胜感激一些链接或使这项工作的方法。我曾尝试将我的控制器命名为其他名称ApplicationController
并对其进行真正的ApplicationController
扩展,但这似乎也不起作用。我真的很喜欢任何让引擎用户的生活尽可能轻松的解决方案。理想情况下,他们不必扩展我的课程,但他们会将所有功能都内置到他们自己的ApplicationController
.
ruby-on-rails - 在 Rails 引擎中使用 permalink_fu 子类化 ActiveRecord
这个问题与在 Ruby 中扩展类方法有关,也许更具体地说是 permalink_fu 这样做的方式。
似乎has_permalink
在派生模型中将无法使用模型。当然,我希望类中定义的任何内容都可以被其派生类继承。
permalink_fu 混合自身的方式是否会导致此问题?
我正在使用 permalink-v.1.0.0 gem http://github.com/goncalossilva/permalink_fu
ruby-on-rails - 创建 Rails 3 引擎的问题
我正在创建我的第一个 Rails 3 引擎,目前收到以下错误消息
为了给你更多的背景知识,我没有把引擎作为一个 gem,但是我把引擎文件放在了 vendor/plugins 文件夹中。我知道在插件文件夹中加载时存在问题,但我不清楚如何解决该问题。
我在 Engine 中的 rails/init.rb 文件有以下代码
建议?
ruby-on-rails - 如何制作可插拔的 Rails 应用程序
基本上,我想编写一个 rails 3 应用程序
- 可嵌入到其他 rails 3 应用程序中(基本上是一些路由、控制器和一些视图,没有持久化模型)
- 独立工作
- 可以捆绑到一个 gem 中并从一个命令启动(这个更好)
根据我的阅读,rails 引擎将完全解决我的问题。当你用谷歌搜索时,你得到的绝大多数东西要么是人们抱怨缺乏文档,要么是有人在构建插件,而不是真正的可插拔应用程序。谁能指出我更好的文档/截屏视频(如果需要,甚至是书籍)
谢谢一堆
ruby-on-rails - Rails 3 中的插件与引擎,作为 gem 发布
在 Rails::Plugin(Rails 3)的文档中,我正在阅读以下内容:
“...您实际上不能在插件中声明 Rails::Engine,否则会导致相同的文件被加载两次。这意味着如果您想将 Engine 作为 gem 发布,则它不能用作插件,反之亦然反之亦然。”
谁能更具体地说明哪些文件被加载了两次?我已经将插件/gem 声明为引擎,并且它也可以很好地放入供应商/插件中(并且我想保持这种方式),尽管有上面的声明。我只是想弄清楚为什么(以及是否)这不是一件好事。
谢谢!
ruby-on-rails-3 - 如何在主应用程序中覆盖 Rails 3 引擎模型和控制器?
我希望能够在基础应用程序中覆盖我的 rails 3 引擎的模型和控制器。
检查 $LOAD_PATH,我发现引擎的 'app/{models,controllers}' 在那里,但我不能明确要求引擎的模型或控制器文件:要求 'engine_name/model_name' 失败,“没有这样的文件”(尝试使用两个命名空间( app/controllers/enginename/*) 和普通引擎)。
那么,在 Rails 3 中扩展引擎模型/控制器而不将它们复制到基本应用程序的最佳方法是什么?
基本上,这是一个加载顺序问题。所以,如果我明确要求引擎中的模型,一切都很好,但我希望有更好的方法。
ruby-on-rails - rails 3 最好在一个应用程序中处理多个应用程序
我有一个 rails 3 应用程序,它有 2 个不同的 UI,它们都共享相同的模型但具有不同的 UI。让我们称这些零售商和客户为“站点”。Rails 3 中创建单体应用程序以将这两个应用程序保留在一个应用程序中的最佳方法是什么。我应该只是命名控制器,并改变路由吗?
命名空间“零售商”做资源:posts,:comments end
命名空间“客户”做资源:posts,:comments end
并将所有客户控制器放在客户目录中,对于零售商也是如此?并命名视图目录?
ruby-on-rails-3 - Rails 3 Engine - 为用户提供配置
我似乎找不到任何有关如何执行以下操作的文档:我需要为使用我的引擎的任何应用程序提供一个配置变量,以便它们可以轻松地将设置传递给我的引擎。
有没有人有任何链接到正确或可接受的方式来做到这一点?
编辑:作为更新,我想出了一个不错的方法来做到这一点。代码如下。
这允许任何使用我的引擎的应用程序在他们的任何初始化程序或他们的 environment.rb 文件中配置它,如下所示,调用MyEngine::Configuration
类中定义的任何方法: