【问题标题】:How to generate a dummy app inside an already existing rails engine如何在现有的 Rails 引擎中生成虚拟应用程序
【发布时间】:2014-06-23 02:39:42
【问题描述】:

我最近来到一家公司工作,该公司从事特定 Rails 项目已有一段时间了。在开发过程中,我开始回过头来为现有代码以及当前正在生成的代码编写测试。

测试 rails 4 应用程序很容易,但是一旦我开始测试引擎,我就遇到了心理障碍。尽职调查后,我发现大多数人都采取这样的方法 (http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl),但我在所有这些回复中看到的共同点是人们从头开始构建这些应用程序,因此生成了一个虚拟应用程序自动为他们。我没有能够从头开始生成所有内容的好处,并且必须使用我得到的东西,所以呢

我想知道是否有一种方法可以追溯生成只是虚拟应用程序。我可以在控制台中输入一些简单的东西并为我生成吗?还是有一条更长、稍微不那么漂亮的路线?还是完全不同的策略会更好?

【问题讨论】:

  • 你可以放入spec/dummy任何应用程序,这只是你引擎的挂载点,只需生成rails new test_app并将test_app复制到虚拟文件夹。
  • 为什么还需要虚拟应用程序?你不能用主应用测试引擎吗?

标签: ruby-on-rails ruby-on-rails-4 rspec rails-engines legacy-code


【解决方案1】:

鉴于虚拟应用不应该与父 gem 绑定,除了一些模糊的名称,可能会这样做:

cd some_path_where_your_engine_IS_NOT
rails plugin new YOUR_ENGINE_NAME --mountable --dummy-path=spec/dummy --skip-test-unit
mv YOUR_ENGINE_NAME/spec/dummy /real/path/to/YOUR_ENGINE_NAME/spec
rm -rf YOUR_ENGINE_NAME  # cleanup useless cruft

另外,您可能对this answer 感兴趣,以生成具有完全相同的rails 版本的应用程序。

【讨论】:

  • 使用_VERSION_ 作为rails 命令的第一个选项来指定Rails 版本。例如,要使用 Rails 5.0.1:rails _5.0.1_ plugin new YOUR_ENGINE_NAME --mountable --dummy-path=spec/dummy --skip-test-unit
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多