Rails - 在 application.rb 中添加了 4 个自定义资产路径,无需重新启动
Rails - 4 Custom Asset Path added in application.rb without restart
Rails-4
下面提到的字体,
@font-face {
font-family: "Verdana";src: url(/assets/Verdana.ttf) format("truetype");
}
文件位置app/assets/fonts(由rails自己加载)
现在如果我在 app/assets/fonts/client_4 文件夹中有这个文件,
我必须在 application.rb
中添加以下内容
config.assets.paths << Rails.root.join('app', 'assets', 'fonts', 'client_4')
或
Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
config.assets.paths << path
end
它可以使用 url 提供的字体 url(/assets/Verdana.ttf),但需要重新启动服务器才能加载 application.rb
查询
案例是我的字体文件由用户上传并存储在 app/assets/fonts 目录中新创建的 client_x 文件夹中。
我想在这种情况下为 client_x 文件夹添加 asset_path 而无需重新启动服务器。请提出建议。
更新
每当创建目录时,我都会在控制器中添加以下内容,
MyApplication::Application.config.assets.paths << Rails.root.join('app', 'assets', 'fonts', "client_#{@client.id}/").to_s
并且我通过 erb 标签检查了页面中的关注,
= puts MyApplication::Application.config.assets.paths.inspect
我得到了以下输出,
[
[ 0] "/home/..../app/assets/fonts",
[ 1] "/home/..../app/assets/images",
[ 2] "/home/..../app/assets/javascripts",
[ 3] "/home/..../app/assets/stylesheets",
[ 4] "/home/..../vendor/assets/javascripts",
.
.
[20] "/home/..../app/assets/fonts/client_164/",
[21] "/home/..../app/assets/fonts/client_163/"
]
第 20 个路径由 application.rb 添加并在服务器启动时加载,我通过 asset_url 在 font-face
[=67= 中获取字体文件]
第 21 条路径由控制器添加,并且我没有通过 asset_url 在 font-face 中获取字体文件。
我没有得到如果我检查我可以看到资产中的两个路径,我仍然没有得到控制器添加的 client_163 内字体文件的资产 url。我想要它而无需重新启动服务器。请建议 eagerload 或 autoload 是否有帮助。
我无法得到我想要的确切内容,但我找到了替代方法。
我没有为 app/assets/fonts/ 中的子目录添加资产路径。
我使用了完整的 url,例如“#{APP_URL}/assets/client_#{client_id}/#{self[file]}”
产生 url 像 'http://localhost:3000/assets/client_163/GreatVibes-Regular.otf'
此处 APP_URL 用于开发的是 development.rb 中设置的“http://localhost:3000”。
同样添加用于暂存和制作。
最好在 application.yml 中保留变量 APP_URL(实施 figaro gem)并以“#{ENV[APP_URL]}”访问(注意:添加 application.yml 在.gitignore)
等待更好的方法。
更新
在暂存和制作中,我正在为 不安全 https url 申请字体,所以,请帮忙。
Rails-4
下面提到的字体,
@font-face {
font-family: "Verdana";src: url(/assets/Verdana.ttf) format("truetype");
}
文件位置app/assets/fonts(由rails自己加载)
现在如果我在 app/assets/fonts/client_4 文件夹中有这个文件,
我必须在 application.rb
中添加以下内容config.assets.paths << Rails.root.join('app', 'assets', 'fonts', 'client_4')
或
Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
config.assets.paths << path
end
它可以使用 url 提供的字体 url(/assets/Verdana.ttf),但需要重新启动服务器才能加载 application.rb
查询
案例是我的字体文件由用户上传并存储在 app/assets/fonts 目录中新创建的 client_x 文件夹中。
我想在这种情况下为 client_x 文件夹添加 asset_path 而无需重新启动服务器。请提出建议。
更新
每当创建目录时,我都会在控制器中添加以下内容,
MyApplication::Application.config.assets.paths << Rails.root.join('app', 'assets', 'fonts', "client_#{@client.id}/").to_s
并且我通过 erb 标签检查了页面中的关注,
= puts MyApplication::Application.config.assets.paths.inspect
我得到了以下输出,
[
[ 0] "/home/..../app/assets/fonts",
[ 1] "/home/..../app/assets/images",
[ 2] "/home/..../app/assets/javascripts",
[ 3] "/home/..../app/assets/stylesheets",
[ 4] "/home/..../vendor/assets/javascripts",
.
.
[20] "/home/..../app/assets/fonts/client_164/",
[21] "/home/..../app/assets/fonts/client_163/"
]
第 20 个路径由 application.rb 添加并在服务器启动时加载,我通过 asset_url 在 font-face
[=67= 中获取字体文件]第 21 条路径由控制器添加,并且我没有通过 asset_url 在 font-face 中获取字体文件。
我没有得到如果我检查我可以看到资产中的两个路径,我仍然没有得到控制器添加的 client_163 内字体文件的资产 url。我想要它而无需重新启动服务器。请建议 eagerload 或 autoload 是否有帮助。
我无法得到我想要的确切内容,但我找到了替代方法。
我没有为 app/assets/fonts/ 中的子目录添加资产路径。
我使用了完整的 url,例如“#{APP_URL}/assets/client_#{client_id}/#{self[file]}” 产生 url 像 'http://localhost:3000/assets/client_163/GreatVibes-Regular.otf'
此处 APP_URL 用于开发的是 development.rb 中设置的“http://localhost:3000”。 同样添加用于暂存和制作。
最好在 application.yml 中保留变量 APP_URL(实施 figaro gem)并以“#{ENV[APP_URL]}”访问(注意:添加 application.yml 在.gitignore)
等待更好的方法。
更新
在暂存和制作中,我正在为 不安全 https url 申请字体,所以,请帮忙。