1
我使用Sass :: Engine动态编译css文件,并且需要将环境和加载路径传递给链轮。这在开发工作得很好:生产环境中Rails.application.assets的等效内容是什么?
def compile_scss
view_context = ActionView::Base.new
environment = Rails.application.assets
# body and filename are instance variables created elsewhere
@compiled_file = Sass::Engine.new(body,
filename: filename,
syntax: :scss,
cache: false,
load_paths: environment.paths,
sprockets: {
context: view_context,
environment: environment
}).render
end
,但在生产中失败,因为Rails.application.assets
是nil
。生产中的等价物是什么?
资源在编译时从生产中的公用文件夹提供。 – bkunzi01
@ bkunzi01感谢您的回复。所以也许我在想它错了?由于资源是预编译的,并且由ngix提供服务,所以在生产中不需要Rails.application.assets。因此,也许我需要备份一下,看看资产:预编译(可能?)如何初始化环境并尝试复制它。 – sammms
是的。通常,在运行“bundle exec rake assets:precompile RAILS_ENV = production”的预编译资产时,通常会指定将用于编译的环境配置文件。运行后,您会注意到它将用指纹资产填充公用文件夹。 – bkunzi01