如何在两个单独的rails应用程序之间共享布局和资产?

时间:2013-04-16 08:38:57

标签: ruby-on-rails ruby layout

我目前正在将旧版Rails 2.x.x应用程序迁移到Rails 3.2。我这样做是通过将单片应用程序的特定部分分解为小型专用应用程序。我的麻烦在于代码重复。较小的应用程序将共享相同的客户端代码,用于一般布局,javascript和css。 如何打包布局和客户端代码,以便可以在单独的独立应用程序之间共享?我最初的猜测是可以使用可安装的引擎来完成。但我不确定这是否有点过分。

1 个答案:

答案 0 :(得分:-2)

我写了一篇博客http://blogs.pigrider.com/blogs/22来展示如何构建一个共享布局引擎,以便在Rails 3.2中逐步使用多个应用程序。

浏览我的博客:

此博客展示了如何构建Rails引擎以逐步在多个应用程序之间共享布局。我在这个博客中构建共享布局引擎的方式可能不是最好的。但是,我只想给那些仍在努力构建这种引擎的人提供一些线索。

  1. 我的引擎名称是“PigriderLayout”。运行命令rails plugin new PigriderLayout --mountable -d mysql来创建一个新的引擎项目。这里我使用-d mysql,因为我使用MySQL作为数据库。您可以将其更改为适合您自己的数据库,并且不要忘记将相应的数据库gem添加到Gemfile中。我将gem'mysql2','0.3.11'放入我的Gemfile中。

  2. 为所有共享布局内容生成控制器。运行此命令rails generate controller main globalLayout aboutUs contactUs。这里我在这个主控制器中有三个动作。然后,编辑文件config / routes.rb,让它看起来像:

    PigriderLayout :: Engine.routes.draw做
        匹配“AboutUs”=>“main#aboutUs”,:as =>:aboutUs
        匹配“ContactUs”=>“main#contactUs”,:as =>:contactUs
    结束

  3. 在目录app / views / pigrider_layout / main中,您现在应该看到三个视图文件。它们是globalLayout.html.erb,aboutUs.html.erb和contactUs.html.erb。您可以在aboutUs.html.erb和contactUs.html.erb中写下您想要的任何内容。在文件globalLayout.html.erb中,我写道:

  4. ...