Tag: 轨道引擎

Rails 3.2引擎布局

在使用可安装引擎时,我很难理解Rails 3.2如何应用布局。 场景:我正在构建一个引擎,它本身具有仪表板视图和各种管理function的管理视图。 我希望仪表板的布局可以被基础应用程序覆盖(如果用户需要),但管理员应该始终使用自己的布局。 这就是我现在在我的引擎里面所拥有的东西; application_controller.rb module Myengine class ApplicationController < ActionController::Base 管理员/ dashboard_controller.rb module Myengine class Admin::DashboardController < ApplicationController 现在我有我的引擎application.html.erb应用一个可怕的红色背景,而基本应用程序application.html.erb使用一个愉快的黄色背景,所以我可以区分正在应用的应用程序布局。 在这种情况下,如果我首先访问基本应用程序,我会看到我的黄色背景(来自基础应用程序),如果我同时转到引擎和引擎管理路径,黄色背景仍然存在。 如果我重新启动服务器并首先访问引擎,那么我会看到引擎和引擎管理路径的红色背景,而基本应用程序显示黄色背景。 如果我修改我的admin / dashboard_controller.rb如下; module Myengine class Admin::DashboardController < ApplicationController layout 'myengine/application' 我希望它只适用于引擎/管理员控制器 – 但如果我重新启动服务器并访问引擎/管理路径,我会看到红色背景,而引擎的根视图使用基本应用程序黄色布局。 如果我再次重新启动服务器并访问已安装引擎的根目录,我会得到应用的红色背景,它仍然保留在引擎管理路径上。 Aaaaarggggghhhhh! 根据首先访问应用程序的路径,是否预期行为会使用不同的应用程序布局? 当然不是?? 我一定做错了什么!

在Rails引擎规范中使用正确的url_for方法

我在Rails引擎中有一个请求规范。 呈现的视图调用路径并传入散列,即projects_path(:scope => “user”) 。 像这样的路由最终将调用url_for ,但url_for在很多地方定义。 在主应用程序(根级别)中运行应用程序或运行请求规范时,调用链最终在ActionView::RoutingUrlFor#url_for ; 但是,当在引擎中运行规范时,调用链最终会出现在ActionView::Helpers::UrlHelper#url_for 。 在Rails 4中, UrlHelper定义的url_for方法不再接受哈希参数,所以我留下了这个错误 Failure/Error: visit projects_opportunity_intakes_path ActionView::Template::Error: arguments passed to url_for can’t be handled. Please require routes or provide your own implementation 我想弄清楚的是,为什么当我在我的引擎中运行规范时,它会回到ActionView::Helpers::UrlHelper ,但在其他任何情况下都没有。 这非常令人困惑。 有一件事对我来说很突出:当我在视图中放置一个断点并评估self.class ,我通常得到一些从ActionView::Baseinheritance的东西,但是当我从我的引擎运行一个规范时,该类不会inheritance从任何事情。 我不知道这是否相关,但看起来很可疑。 有人经历过吗? 知道解决方法吗? 我的模块可能被包含在错误的订单中吗? 在spec_helper或虚拟应用程序初始化中有什么东西我可以做以确保正确使用正确的模块吗?

在Rails3引擎上需要Haml的最佳方法

我正在开发一个Rails3引擎应用程序,我想使用Haml来查看视图。 首先,我所做的是将它添加到引擎Gemfile: gem “haml” 当我测试我的引擎时,它工作正常(我使用https://github.com/josevalim/enginex生成gem并使用虚拟应用程序测试它)。 当我尝试在真正的Rails应用程序上使用引擎时,我的问题开始了。 应用程序在它自己的Gemfile上没有gem“haml”,因此它没有初始化Haml,所以我收到模板未找到错误,因为它没有查找.haml视图。 我想通过在引擎上要求Haml,Rails应用程序也需要它。 我现在所做的是使用以下代码在引擎上添加config / initializers / haml.rb: require ‘haml’ Haml.init_rails(binding) 它现在正在运行,但我想知道这是否真的是一个很好的方法。 为什么Rails没有调用Haml“init.rb”文件,因此只需将gem“haml”添加到引擎Gemfile中就可以正确初始化Haml?

add_dependency和add_runtime_dependency之间的区别?

在Rails引擎的gemspec中使用add_dependency和add_runtime_dependency有什么区别? 例如: Gem::Specification.new do |s| s.add_dependency ‘jquery-rails’ s.add_runtime_dependency ‘jquery-rails’ end 它们之间有什么区别?

如何使用ActiveSupport :: Configurable with Rails Engine

我想给我的rails引擎gem一个合适的配置可能性。 在initializers/my_gem.rb中看起来像这样的东西(链接到当前的初始化程序) : MyGem.configure do |config| config.awesome_var = true # config.param_name = :page end 因此,我一直在寻找其他gem中的任何线索,我发现的最好的云是kaminari/config.rb 。 但它看起来很丑陋,我认为必须有更好的方法。