它可以在开发模式下找到,但给我看ActionController::RoutingError (No route matches [GET] "/lenord-single-page-theme/js/custom.js"):
生产模式错误。
在运行 rails server 之前,我运行了 RAILS_ENV=production rake assets:precompile --trace
我在供应商下添加了两个 Assets 文件夹
在 application.rb
文件,我插入一行
config.assets.paths << "#{Rails.root}/vendor/themes"
并更改了
config.serve_static_assets
至true
+++ b/config/environments/production.rb
@@ -20,7 +20,7 @@ DqaStreesfulServer::Application.configure do
# config.action_dispatch.rack_cache = true
# Disable Rails's static asset server (Apache or nginx will already do this).
- config.serve_static_assets = false
+ config.serve_static_assets = true
文件夹结构
vendor
├── assets
│ ├── javascripts
│ └── stylesheets
└── themes
├── ace-admin-theme
│ ├── avatars
│ ├── css
│ ├── font
│ ├── images
│ ├── img
│ └── js
└── lenord-single-page-theme
├── css
├── fonts
├── img
├── index.html
├── js
└── rs-assets
更新
我以这种方式引用我的js文件
welcome.html.haml
60: %script{src: asset_path("lenord-single-page-theme/js/custom.js")}
更新
我猜这个问题可能在
production.rb
我试图通过在
production.rb
中添加这一行来编译所有文件config.assets.precompile += %w( vendor/themes/* )
我通过
rails s -e production
在生产模式下运行服务器命令而不是 nginx or apache
更新
我得到了
ActionView::Template::Error (Invalid CSS after "}": expected selector or at-rule, was "}"
在生产模式在我做了以下更改之后。
在
../../config/environments/production.rb
+ config.assets.compile = true
+ config.assets.precompile = [/^[-_a-zA-Z0-9]*\..*/]
+ config.assets.precompile += %w( *.js *.css )
我在这里展示了 vendoe/theme/和 public/assets 之间的 TreeView
合理吗?
在公共(public)/ Assets 下
% tree lenord-single-page-theme (git)-[feature/prettier_form]
lenord-single-page-theme
└── js
├── application-dfabb3389cb2e71ba110a8589e5e106b.js
└── application-dfabb3389cb2e71ba110a8589e5e106b.js.gz
在供应商/主题/下
lenord-single-page-theme
├── css
│ ├── animate.min.css
│ ├── bootstrap.css
│ ├── bootstrap.min.css
│ ├── font-awesome.min.css
│ ├── prettyPhoto.css
│ ├── rs-settings-ie8.css
│ ├── rs-settings.css
│ └── style.css
├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ └── fontawesome-webfont.woff
├── img
│ ├── 1.jpg
│ ├── 10.jpg
│ ├── 11.png
│ ├── 12.jpg
│ ├── 13.png
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 8.jpg
│ ├── 9.jpg
│ ├── aboutus.png
│ ├── back-top.png
│ ├── banner_1.jpg
│ ├── banner_2.jpg
│ ├── banner_3.jpg
│ ├── blue-back.png
│ ├── dummy.png
│ ├── fback.png
│ ├── portfolio
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ ├── 9.jpg
│ │ ├── tn1.jpg
│ │ ├── tn2.jpg
│ │ ├── tn3.jpg
│ │ ├── tn4.jpg
│ │ ├── tn5.jpg
│ │ ├── tn6.jpg
│ │ ├── tn7.jpg
│ │ ├── tn8.jpg
│ │ └── tn9.jpg
│ ├── prettyPhoto
│ │ ├── dark_rounded
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPattern.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── dark_square
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPattern.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── default
│ │ │ ├── default_thumb.png
│ │ │ ├── loader.gif
│ │ │ ├── sprite.png
│ │ │ ├── sprite_next.png
│ │ │ ├── sprite_prev.png
│ │ │ ├── sprite_x.png
│ │ │ └── sprite_y.png
│ │ ├── facebook
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPatternBottom.png
│ │ │ ├── contentPatternLeft.png
│ │ │ ├── contentPatternRight.png
│ │ │ ├── contentPatternTop.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── light_rounded
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ └── light_square
│ │ ├── btnNext.png
│ │ ├── btnPrevious.png
│ │ ├── default_thumbnail.gif
│ │ ├── loader.gif
│ │ └── sprite.png
│ ├── product.png
│ ├── service
│ │ ├── 11.png
│ │ ├── 12.png
│ │ ├── 21.png
│ │ ├── 22.png
│ │ ├── 31.png
│ │ ├── 32.png
│ │ ├── 41.png
│ │ └── 42.png
│ ├── service.png
│ ├── vast.jpg
│ ├── vivotek_square_icon.jpg
│ ├── vvtk_sd.jpg
│ └── wood-back.png
├── index.html
├── js
│ ├── application.js
│ ├── bootstrap.js
│ ├── bootstrap.min.js
│ ├── custom.js
│ ├── gmaps.js
│ ├── html5shiv.js
│ ├── jquery.arbitrary-anchor.js
│ ├── jquery.js
│ ├── jquery.knob.js
│ ├── jquery.prettyPhoto.js
│ ├── jquery.themepunch.plugins.min.js
│ ├── jquery.themepunch.revolution.min.js
│ ├── respond.min.js
│ └── waypoints.min.js
└── rs-assets
├── arrow_large_left.png
├── arrow_large_right.png
├── arrow_left.png
├── arrow_left2.png
├── arrow_right.png
├── arrow_right2.png
├── arrowleft.png
├── arrowright.png
├── arrows.psd
├── black50.png
├── boxed_bgtile.png
├── bullet.png
├── bullet_boxed.png
├── bullets.png
├── bullets.psd
├── bullets2.png
├── coloredbg.png
├── grain.png
├── large_left.png
├── large_right.png
├── loader.gif
├── loader2.gif
├── navigdots.png
├── navigdots_bgtile.png
├── shadow1.png
├── shadow2.png
├── shadow3.png
├── small_arrows.psd
├── small_left.png
├── small_left_boxed.png
├── small_right.png
├── small_right_boxed.png
├── timer.png
├── timerdot.png
├── transparent.jpg
└── white50.png
14 directories, 154 files
最佳答案
管道 Assets 可以放置在三个位置之一的应用程序中:app/assets、lib/assets 或 vendor/assets。
您已将 Assets 放置在 vendor/assets 和 vendor/themes 中。
预编译附加 Assets :
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/js/*.js']
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/css/*.css']
运行 rake 任务:
RAILS_ENV=production bundle exec rake assets:precompile
在公共(public)/ Assets 下查看:
该文件应预编译
vendor/themes/lenord-single-page-theme/js/custom.js
或者
lenord-single-page-theme/js/custom.js
然后像这样调用自定义 Assets 文件:
javascript_include_tag "PATH_OF_THE_ASSET"
例如:
javascript_include_tag "lenord-single-page-theme/js/custom.js"
或者
javascript_include_tag "vendor/themes/lenord-single-page-theme/js/custom.js"
关于ruby-on-rails - Rails App 未在生产模式下使用自定义 Assets 文件夹提供 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750596/