Rails引擎的静态资产未在主机应用程序中提供

Sam*_*off 5 ruby-on-rails rails-engines

我正在研究Rails引擎.该引擎在其public文件夹中包含一些静态JS/CSS ,我希望这些资产可以合并到宿主应用程序中并由其提供服务.

我把它添加到我的engine.rb文件中:

initializer "static assets" do |app|
  app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
end
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我在Rails引擎中运行虚拟应用程序时,或者通过path以下方式将引擎安装在我的文件系统上的单独应用程序中:

gem 'my-engine', path: '~/my-engine`
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,一旦我发布到RubyGems并通过其他应用程序安装

gem 'my-engine'
Run Code Online (Sandbox Code Playgroud)

静态资产全部404.

关于如何诊断的任何想法?在主机应用程序中还有什么我需要做的,以确保静态资产被拉入+服务吗?它不是生产环境的东西,因为它甚至不能用于开发.

Sam*_*off 4

我忘记了public我的文件配置选项.gemspec

Gem::Specification.new do |s|
  ..
  s.files = Dir["{app,config,db,lib,public}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
Run Code Online (Sandbox Code Playgroud)

现在一切正常了!