相关疑难解决方法(0)

Rails 3.1:引擎与可安装应用程序

有人可以帮我理解Rails引擎和可安装应用程序之间的差异吗?在Rails 3.1中,您可以使用"rails new plugin _ __ "命令创建任一个.

rails plugin new forum --full        # Engine
rails plugin new forum --mountable   # Mountable App
Run Code Online (Sandbox Code Playgroud)

你什么时候想要使用一个?我知道你可以将Engine打包成一个宝石.可安装应用程序的情况不是这样吗?还有什么其他差异?

ruby-on-rails-plugins rails-engines ruby-on-rails-3 ruby-on-rails-3.1

119
推荐指数
4
解决办法
3万
查看次数

为可安装的Rails 3.1引擎列出'rake routes'

我正在开发一个可安装的引擎,用于Rails 3.1,我想列出引擎的路由.

我用以下方法创建了引擎:

$ rails plugin new rails_blog_engine --mountable
Run Code Online (Sandbox Code Playgroud)

编辑'test/dummy/config/routes'文件阅读:

Rails.application.routes.draw do
  mount RailsBlogEngine::Engine => "/blog"
end
Run Code Online (Sandbox Code Playgroud)

...和'config/routes'读取:

RailsBlogEngine::Engine.routes.draw do
  resources :posts
end
Run Code Online (Sandbox Code Playgroud)

我想列出为':posts'生成的路线,但目前尚不清楚我是如何做到这一点的.当我运行'rake app:routes'时,我只获得"/ blog"路线:

$ rake app:routes
rails_blog_engine    /blog    {:to=>RailsBlogEngine::Engine}
Run Code Online (Sandbox Code Playgroud)

当我运行'rake routes'时,我收到一个错误:

$ rake routes
rake aborted!
Don't know how to build task 'routes'
Run Code Online (Sandbox Code Playgroud)

我怎样才能看到':posts'的路线?我可以不重写相关的rake任务吗?

routes ruby-on-rails rails-routing rails-engines ruby-on-rails-3.1

21
推荐指数
2
解决办法
7601
查看次数

如何使用Cucumber和Rspec测试Rails 3引擎?

如果这个问题有点主观,我道歉...我正在试图找出用黄瓜和Rspec测试Rails 3引擎的最佳方法.为了测试发动机,需要使用导轨3 app.这是我目前正在做的事情:

  1. 通过运行以下命令将rails测试应用添加到gem(myengine)的根目录: rails new /myengine/rails_app

  2. /myengine/rails_app/features像在普通的Rails应用程序中一样添加Cucumber

  3. 需要Rails Engine Gem(使用:path=>"/myengine")in/myengine/rails_app/Gemfile

  4. 将spec添加到gem的根目录: /myengine/spec

  5. 包括夹具,/myengine/spec/fixtures我将以下内容添加到我的cuc env.rb中:

env.rb:

Fixtures.reset_cache
fixtures_folder = File.join(Rails.root, 'spec', 'fixtures')  
fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f| File.basename(f, '.yml') }  
Fixtures.create_fixtures(fixtures_folder, fixtures)
Run Code Online (Sandbox Code Playgroud)

你看到这样设置有什么问题吗?测试运行正常,但我有点犹豫要把功能放在测试轨应用程序中.我最初尝试将这些功能放在gem的根目录中,并且我在里面创建了测试rails应用程序features/support,但由于某些原因,当我运行测试时我的引擎不会初始化,即使我可以看到应用程序在cuc运行时加载其他所有内容.

如果有人正在使用Rails Engines并使用cuc和rspec进行测试,我将有兴趣听听您的设置.

**更新
自从我写这个问题以来,我改变了我的设置.我决定摆脱引擎根目录下的spec目录.现在我只创建一个名为"test_app"的rails应用程序,并在该应用程序中设置cuc和rspec,就像我通常在rails应用程序中所做的那样.然后我像上面步骤#3中那样包含宝石.由于引擎是一个子应用程序,我想它最好测试它就像一个普通的rails应用程序.如果有人有不同的设置,我仍然有兴趣听到.

ruby-on-rails rails-engines ruby-on-rails-3

19
推荐指数
1
解决办法
5006
查看次数