从 rails 应用程序提供已编译的 javascript 和 css 文件,供外部站点使用

Serve compiled javascript and css files from rails app for use in external site

如何使我的 rails 应用程序中的某些资产文件(.js 和 .css)可供其他站点使用?

示例:

// allow this to be added to some external website
<link rel="stylesheet" href="https://myrailsapp.com/external/mystyle.css">
<script src="https://myrailsapp.com/external/myscript.js"></script>

js 和 css 文件应该由标准资产管道编译。

For rails 5 在config/initializers/assets.rb

中添加要预编译的所需资源

Rails.application.config.assets.precompile += %w( external/myscript.js external/mystyle.css )

这将在每次部署时生成资产的预编译版本。

带摘要(默认 rails 行为,推荐)

但是附加摘要有问题。预编译的资产将被命名为

mystyle-36050fdf64ed881b967d4216084ed3072da6369f1b4dcf783ea28435f6db0091.css

您可以将部署设置更改为 运行 rake 任务,该任务将从资产的文件名中删除摘要。例如https://github.com/galetahub/ckeditor/blob/master/lib/tasks/ckeditor.rake

假设您正在使用 capistrano 来部署您的应用程序。您必须将类似的内容添加到 config/deploy.rb

namespace :deploy do
  after :restart, 'your_rake_task_namespace:task_name'
end

没有摘要(更简单但会导致缓存失效)

如果您不想增加部署设置的复杂性,只需禁用资产指纹识别即可。通过在 config/application.rb 或单个环境 config/environments/production.rb

中添加 config.assets.digest = false 来全局执行