1

由于我的生产机器有些受限(树莓派),我想在我的生产机器上安装尽可能少的 gem。为了减少依赖关系,我想在我的开发机器上预编译我的资产并将它们部署到生产中。所以我不必在我的生产机器上进行预编译,也不需要资产管道所需的所有 gem。

因此,我将 Gemfile 中的所有 gem 移至资产组并更改了我的 config/application.rb:

Bundler.require *Rails.groups(:assets => %w(development test))

在开发和测试环境中一切正常。

但是,如果我想通过...在我的开发机器上进行预编译...

RAILS_ENV='production' bundle exec rake assets:precompile

...由于资产组中的宝石丢失而中断。

但是我不能简单地将资产组添加到生产环境中,因为这需要在我的生产环境中安装所有资产 gem(我不想这样做)。

有人知道如何解决这个问题吗?

4

1 回答 1

1

您可以在 dev m/c 中编译它rake assets:precompile,然后将 public/assets 文件夹提交到远程仓库。因此,当生产服务器启动时,它将从资产文件夹中获取已经预编译的资产。确保您所做的任何 js/css/image 更改,相应地更新资产文件。

必须安装 Gemfile 中提到的任何 gem。如果您觉得不需要使用特定的 gem,请将其从 Gemfile 中删除。前任。rubyracer gem 存在于用于编译 js 的 Gemfile 中。为避免任何问题,如果不存在已编译资产的情况下的回退应该为 false,因为由于缺少 js 编译器而无法在运行时编译

于 2014-01-20T08:53:32.467 回答