从 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
来全局执行
如何使我的 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
来全局执行