How to implement file manager or file explorer on Rails - ruby-on-rails

My website will generate lots of files and folders under my public folder
and I wanna provide user to download or zip all contents in a folder via web page,
How to implement it in a easier way ? any idea? Thanks
My files structure
.
└── streaming
├── 2014-04-01_17-35-32
├── 2014-04-02_16-10-10
│   ├── 2014-04-02_16-10-10.log
│   ├── 2014-04-02_16-10-10.mp4
│   ├── 2014-04-02_16-10-10.png
│   ├── 2014-04-02_16-10-10.txt
│   ├── 2014-04-02_16-10-15.log
│   ├── 2014-04-02_16-10-15.mp4
│   ├── 2014-04-02_16-10-15.png
│   ├── 2014-04-02_16-10-15.txt
│   ├── 2014-04-02_16-10-18.log
│   ├── 2014-04-02_16-10-18.mp4
│   ├── 2014-04-02_16-10-18.png
│   ├── 2014-04-02_16-10-18.txt
│   ├── 2014-04-02_16-10-22.log
│   ├── 2014-04-02_16-10-22.mp4
│   ├── 2014-04-02_16-10-22.png
│   ├── 2014-04-02_16-10-22.txt
│   ├── 2014-04-02_16-10-24.log
│   ├── 2014-04-02_16-10-24.png
│   ├── 2014-04-02_16-10-24.txt
│   ├── 2014-04-02_16-10-25.log
│   ├── 2014-04-02_16-10-25.mp4
│   ├── 2014-04-02_16-10-25.png
│   ├── 2014-04-02_16-10-25.txt
│   ├── 2014-04-02_16-10-31.log
│   ├── 2014-04-02_16-10-31.mp4
│   ├── 2014-04-02_16-10-31.png
│   ├── 2014-04-02_16-10-31.txt
│   └── 2014-04-02_16-10-36.mp4
├── 2014-04-02_16-11-46
│   ├── 2014-04-02_16-11-46.log
│   ├── 2014-04-02_16-11-46.mp4
│   ├── 2014-04-02_16-11-46.png
│   ├── 2014-04-02_16-11-46.txt
│   ├── 2014-04-02_16-11-49.log
│   ├── 2014-04-02_16-11-49.mp4
│   ├── 2014-04-02_16-11-49.png
│   ├── 2014-04-02_16-11-49.txt
│   ├── 2014-04-02_16-11-50.log
│   ├── 2014-04-02_16-11-50.mp4
│   ├── 2014-04-02_16-11-50.png
│   ├── 2014-04-02_16-11-50.txt
│   └── 2014-04-02_16-11-55.mp4

Related

How to import luarocks local modules

I have installed cjson using Lua Rocks locally.
luarocks install --local lua-cjson
But I cannot access the module.
> require('cjson')
stdin:1: module 'cjson' not found:
Packages were installed in to ~/.luarocks. Following is the file structure
.
├── bin
│   ├── json2lua
│   └── lua2json
├── lib
│   ├── lua
│   │   └── 5.4
│   │   └── cjson.so
│   └── luarocks
│   └── rocks-5.4
│   ├── lua-cjson
│   │   └── 2.1.0.6-1
│   │   ├── bin
│   │   │   ├── json2lua
│   │   │   └── lua2json
│   │   ├── lua-cjson-2.1.0.6-1.rockspec
│   │   ├── rock_manifest
│   │   └── tests
│   │   ├── agentzh.t
│   │   ├── bench.lua
│   │   ├── example1.json
│   │   ├── example2.json
│   │   ├── example3.json
│   │   ├── example4.json
│   │   ├── example5.json
│   │   ├── genutf8.pl
│   │   ├── numbers.json
│   │   ├── octets-escaped.dat
│   │   ├── README
│   │   ├── rfc-example1.json
│   │   ├── rfc-example2.json
│   │   ├── test.lua
│   │   ├── TestLua.pm
│   │   └── types.json
│   └── manifest
└── share
└── lua
└── 5.4
├── cjson
│   └── util.lua
├── json2lua.lua
└── lua2json.lua
What are the environment variables that should be in place for Lua to be able to find the packages?
luarocks path prints everything that should be added
➜ ~ luarocks path
export LUA_PATH='/usr/share/lua/5.4/?.lua;/usr/share/lua/5.4/?/init.lua;/usr/lib/lua/5.4/?.lua;/usr/lib/lua/5.4/?/init.lua;./?.lua;./?/init.lua;/home/s1n7ax/.luarocks/share/lua/5.4/?.lua;/home/s1n7ax/.luarocks/share/lua/5.4/?/init.lua'
export LUA_CPATH='/usr/lib/lua/5.4/?.so;/usr/lib/lua/5.4/loadall.so;./?.so;/home/s1n7ax/.luarocks/lib/lua/5.4/?.so'
export PATH='/home/s1n7ax/.luarocks/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/s1n7ax/.s1n7ax/bin:/home/s1n7ax/.yarn/bin:/home/s1n7ax/.local/bin'
It just prints them NOT run them. So that needs to be ran. I added following line to init script to add the path at system boot
eval $(luarocks path)

How can I add a custom rake task to my engine?

I am writing an engine and I want to include a task in it.
I wrote my file .rake, bus it isn't listed with rake --task. If I try to run int anyway I get:
❯ rake what2find:index
rake aborted! Don't know how to build task 'what2find:index' (See the
list of available tasks with rake -T -A)
(See full trace by running task with --trace)
I don't understand why.
lib/tasks/what2find/index.rake
namespace :what2find do
desc "Indexes the configured entities"
task :index => :environment do
include What2find
# Task logic
end
end
Rakefile:
begin
require 'bundler/setup'
rescue LoadError
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end
require 'rdoc/task'
RDoc::Task.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'What2find'
rdoc.options << '--line-numbers'
rdoc.rdoc_files.include('README.md')
rdoc.rdoc_files.include('lib/**/*.rb')
end
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
load 'rails/tasks/engine.rake'
load 'rails/tasks/statistics.rake'
# load 'lib/tasks/what2find_tasks.rake'
require 'bundler/gem_tasks'
require 'rake/testtask'
Rake::TestTask.new(:test) do |t|
t.libs << 'test'
t.pattern = 'test/**/*_test.rb'
t.verbose = false
end
task default: :test
My gem's directory structure is:
.
├── app
│   ├── assets
│   │   ├── config
│   │   │   └── what2find_manifest.js
│   │   ├── images
│   │   │   └── what2find
│   │   └── stylesheets
│   │   └── what2find
│   │   └── application.css
│   ├── controllers
│   │   └── what2find
│   │   └── application_controller.rb
│   ├── helpers
│   │   └── what2find
│   │   └── application_helper.rb
│   ├── jobs
│   │   └── what2find
│   │   └── application_job.rb
│   ├── mailers
│   │   └── what2find
│   │   └── application_mailer.rb
│   ├── models
│   │   ├── index.rb
│   │   └── what2find
│   │   └── application_record.rb
│   └── views
│   └── layouts
│   └── what2find
│   └── application.html.erb
├── bin
│   └── rails
├── config
│   ├── initializers
│   │   └── what2find.rb.dist
│   └── routes.rb
├── Gemfile
├── Gemfile.lock
├── lib
│   ├── tasks
│   │   ├── test.rake
│   │   ├── what2find
│   │   │   └── index.rake
│   │   ├── what2find.rake
│   │   └── what2find_tasks.rake
│   ├── what2find
│   │   ├── engine.rb
│   │   └── version.rb
│   └── what2find.rb
├── MIT-LICENSE
├── Rakefile
├── README.md
├── test
│   ├── dummy
│   │   ├── app
│   │   │   ├── assets
│   │   │   │   ├── config
│   │   │   │   │   └── manifest.js
│   │   │   │   ├── images
│   │   │   │   └── stylesheets
│   │   │   │   └── application.css
│   │   │   ├── channels
│   │   │   │   └── application_cable
│   │   │   │   ├── channel.rb
│   │   │   │   └── connection.rb
│   │   │   ├── controllers
│   │   │   │   ├── application_controller.rb
│   │   │   │   └── concerns
│   │   │   ├── helpers
│   │   │   │   └── application_helper.rb
│   │   │   ├── javascript
│   │   │   │   └── packs
│   │   │   │   └── application.js
│   │   │   ├── jobs
│   │   │   │   └── application_job.rb
│   │   │   ├── mailers
│   │   │   │   └── application_mailer.rb
│   │   │   ├── models
│   │   │   │   ├── application_record.rb
│   │   │   │   └── concerns
│   │   │   └── views
│   │   │   └── layouts
│   │   │   ├── application.html.erb
│   │   │   ├── mailer.html.erb
│   │   │   └── mailer.text.erb
│   │   ├── bin
│   │   │   ├── rails
│   │   │   ├── rake
│   │   │   └── setup
│   │   ├── config
│   │   │   ├── application.rb
│   │   │   ├── boot.rb
│   │   │   ├── cable.yml
│   │   │   ├── database.yml
│   │   │   ├── environment.rb
│   │   │   ├── environments
│   │   │   │   ├── development.rb
│   │   │   │   ├── production.rb
│   │   │   │   └── test.rb
│   │   │   ├── initializers
│   │   │   │   ├── application_controller_renderer.rb
│   │   │   │   ├── assets.rb
│   │   │   │   ├── backtrace_silencers.rb
│   │   │   │   ├── content_security_policy.rb
│   │   │   │   ├── cookies_serializer.rb
│   │   │   │   ├── filter_parameter_logging.rb
│   │   │   │   ├── inflections.rb
│   │   │   │   ├── mime_types.rb
│   │   │   │   └── wrap_parameters.rb
│   │   │   ├── locales
│   │   │   │   └── en.yml
│   │   │   ├── puma.rb
│   │   │   ├── routes.rb
│   │   │   ├── spring.rb
│   │   │   └── storage.yml
│   │   ├── config.ru
│   │   ├── db
│   │   │   └── test.sqlite3
│   │   ├── lib
│   │   │   └── assets
│   │   ├── log
│   │   │   ├── development.log
│   │   │   └── test.log
│   │   ├── public
│   │   │   ├── 404.html
│   │   │   ├── 422.html
│   │   │   ├── 500.html
│   │   │   ├── apple-touch-icon.png
│   │   │   ├── apple-touch-icon-precomposed.png
│   │   │   └── favicon.ico
│   │   ├── Rakefile
│   │   ├── storage
│   │   └── tmp
│   │   ├── cache
│   │   │   └── assets
│   │   ├── development_secret.txt
│   │   ├── pids
│   │   └── storage
│   ├── integration
│   │   └── navigation_test.rb
│   ├── test_helper.rb
│   └── what2find_test.rb
└── what2find.gemspec
And my application's directory:
.
├── app
│   ├── assets
│   │   ├── config
│   │   │   └── manifest.js
│   │   ├── images
│   │   └── stylesheets
│   │   └── application.css
│   ├── channels
│   │   └── application_cable
│   │   ├── channel.rb
│   │   └── connection.rb
│   ├── connectors
│   │   ├── abstract_connector.rb
│   │   ├── claro_video.rb
│   │   ├── environment_variables.rb
│   │   ├── movistar_play.rb
│   │   └── netflix.rb
│   ├── controllers
│   │   ├── application_controller.rb
│   │   ├── concerns
│   │   └── content_controller.rb
│   ├── helpers
│   │   ├── application_helper.rb
│   │   ├── connectors_helper.rb
│   │   └── movistar_helper.rb
│   ├── javascript
│   │   ├── channels
│   │   │   ├── consumer.js
│   │   │   └── index.js
│   │   └── packs
│   │   └── application.js
│   ├── jobs
│   │   └── application_job.rb
│   ├── mailers
│   │   └── application_mailer.rb
│   ├── models
│   │   ├── concerns
│   │   └── content.rb
│   └── views
│   └── layouts
│   ├── application.html.erb
│   ├── mailer.html.erb
│   └── mailer.text.erb
├── babel.config.js
├── bin
│   ├── bundle
│   ├── rails
│   ├── rake
│   ├── setup
│   ├── spring
│   ├── webpack
│   ├── webpack-dev-server
│   └── yarn
├── config
│   ├── application.rb
│   ├── boot.rb
│   ├── cable.yml
│   ├── credentials.yml.enc
│   ├── environment.rb
│   ├── environments
│   │   ├── development.rb
│   │   ├── production.rb
│   │   └── test.rb
│   ├── initializers
│   │   ├── application_controller_renderer.rb
│   │   ├── assets.rb
│   │   ├── backtrace_silencers.rb
│   │   ├── content_security_policy.rb
│   │   ├── cookies_serializer.rb
│   │   ├── filter_parameter_logging.rb
│   │   ├── inflections.rb
│   │   ├── mime_types.rb
│   │   ├── what2find.rb
│   │   └── wrap_parameters.rb
│   ├── locales
│   │   └── en.yml
│   ├── master.key
│   ├── mongoid.yml
│   ├── puma.rb
│   ├── routes.rb
│   ├── spring.rb
│   └── webpacker.yml
├── config.ru
├── Gemfile
├── Gemfile.lock
├── lib
│   ├── assets
│   ├── request.rb
│   └── tasks
│   └── content.rake
├── log
│   └── development.log
├── package.json
├── postcss.config.js
├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── apple-touch-icon.png
│   ├── apple-touch-icon-precomposed.png
│   ├── favicon.ico
│   └── robots.txt
├── Rakefile
├── README.md
├── test
│   ├── application_system_test_case.rb
│   ├── channels
│   │   └── application_cable
│   │   └── connection_test.rb
│   ├── controllers
│   ├── fixtures
│   │   └── files
│   ├── helpers
│   ├── integration
│   ├── mailers
│   ├── models
│   ├── system
│   └── test_helper.rb
├── vendor
└── yarn.lock
Someone can say me what I'm doing wrong?
Thanks, in advance!

Multiple source directories in middleman

I have a few projects with common files, so I have made source/shared directory for them.
File structure looks like:
.
├── config.rb
├── build
├── source
│   ├── project-1
│   │   ├── index.html.slim
│   │   ├── js
│   │   │   ├── _templates.js.coffee
│   │   │   └── main.js.coffee
│   │   ├── layouts
│   │   │   └── layout.slim
│   ├── project-2
│   │   ├── index.html.slim
│   │   ├── js
│   │   │   ├── _templates.js.coffee
│   │   │   └── main.js.coffee
│   │   ├── layouts
│   │   │   └── layout.slim
│   └── shared
│   └── js
│   ├── vendor
│   │   ├── _json2.js
│   │   ├── html5shiv.js
Here I want source/shared/js/vendor/html5shiv.js to be in build directory, like main.js script.
When I am building project-1, build directory looks like:
build
├── index.html
├── js
│   ├── main-088a2c74.js
And with all that, can I somehow include shared files in build?

RoutingError with custom assets folder only in production mode

I got all the RoutingError for all js and css files I included in my layout file.
ActionController::RoutingError (No route matches [GET] "/ace-admin-theme/css/ace-rtl.min.css"):
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
ActionController::RoutingError (No route matches [GET] "/ace-admin-theme/js/bottom.js"):
I ran the RAILS_ENV=production rake assets:precompile,and it worked.
In the config/environments/production.rb
config.serve_static_assets = true
config.assets.compile = false
config.assets.precompile += %w( bootstrap.css )
config.assets.precompile += %w( vendor/themes/* )
In the config/application.rb
config.assets.paths << "#{Rails.root}/vendor/themes"
In my layout view I include js and css this way
%script{src: asset_path("lenord-single-page-theme/js/jquery.js")}
/ Bootstrap JS
%script{src: asset_path("lenord-single-page-theme/js/bootstrap.min.js")}
%link{href: asset_path("lenord-single-page-theme/css/rs-settings-ie8.css"), rel: "stylesheet"}/
/ Animate CSS
%link{href: asset_path("lenord-single-page-theme/css/animate.min.css"), rel: "stylesheet"}/
/ Portfolio CSS
%link{href: asset_path("lenord-single-page-theme/css/prettyPhoto.css"), rel: "stylesheet"}/
/ Font awesome CSS
%link{href: asset_path("lenord-single-page-theme/css/font-awesome.min.css"), rel: "stylesheet"}/
I have to two folders under vendor/themes/ as my assets
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
I tree the public/assets/lenord-single-page-theme
.
├── css
│   ├── application-48a2ca576072321b8aa1cbd6a5e2c4d0.css
│   ├── application-48a2ca576072321b8aa1cbd6a5e2c4d0.css.gz
│   ├── application-c10b8fe67580eba27a0c2be97cddd922.css
│   └── application-c10b8fe67580eba27a0c2be97cddd922.css.gz
└── js
├── application-caecf7819e4bf62b1e535d1e6be6cc95.js
├── application-caecf7819e4bf62b1e535d1e6be6cc95.js.gz
├── application-dfabb3389cb2e71ba110a8589e5e106b.js
└── application-dfabb3389cb2e71ba110a8589e5e106b.js.gz
UPDATE: how to recursive add all files under a folder
Now, I need to add all files manually,
Is there any recursive way to add all files ?
config.assets.precompile += %w( bootstrap.css )
config.assets.precompile += %w( vendor/themes/* )
config.assets.precompile += %w( vendor/themes/**/*.js vendor/themes/**/*.css )
config.assets.precompile += %w( vendor/themes/**/*.png vendor/themes/**/*.jpg )
config.assets.precompile += %w( vendor/themes/lenord-single-page-theme/img/*.png )

Rails App not serving asset in production mode with custom assets folder

It works find under development mode, But show me the ActionController::RoutingError (No route matches [GET] "/lenord-single-page-theme/js/custom.js"): error in production mode.
Before running rails server, I ran RAILS_ENV=production rake assets:precompile --trace
I added two assets folders under vendor
in application.rb file , I insert thie line
config.assets.paths << "#{Rails.root}/vendor/themes"
And changed the config.serve_static_assets to 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
Folder Structure
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
UPDATE
I reference my js file in that way
welcome.html.haml
60: %script{src: asset_path("lenord-single-page-theme/js/custom.js")}
UPDATE
I guess the problem may in production.rb
I tried to get all files to be compiled by adding this line in production.rb
config.assets.precompile += %w( vendor/themes/* )
And I ran the server in production mode by rails s -e production command rather than nginx or apache
UPDATE
I got ActionView::Template::Error (Invalid CSS after "}": expected selector or at-rule, was "}" in production mode
After I did the following changes.
In ../../config/environments/production.rb
+ config.assets.compile = true
+ config.assets.precompile = [/^[-_a-zA-Z0-9]*\..*/]
+ config.assets.precompile += %w( *.js *.css )
I showed the treeview between vendoe/theme/ and public/assets here
Is it reasonable ?
under public/assets
% tree lenord-single-page-theme (git)-[feature/prettier_form]
lenord-single-page-theme
└── js
├── application-dfabb3389cb2e71ba110a8589e5e106b.js
└── application-dfabb3389cb2e71ba110a8589e5e106b.js.gz
under vendor/themes/
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
Pipeline assets can be placed inside an application in one of three locations: app/assets, lib/assets or vendor/assets.
You have placed your assets in vendor/assets and vendor/themes.
Precompile additional assets:
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/js/*.js']
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/css/*.css']
Run the rake task:
RAILS_ENV=production bundle exec rake assets:precompile
Check under public/assets:
That file should be precompiled in
vendor/themes/lenord-single-page-theme/js/custom.js
OR
lenord-single-page-theme/js/custom.js
Then call the custom asset file like this:
javascript_include_tag "PATH_OF_THE_ASSET"
Ex:
javascript_include_tag "lenord-single-page-theme/js/custom.js"
OR
javascript_include_tag
"vendor/themes/lenord-single-page-theme/js/custom.js"

Resources