ruby on rails style configuration issue - ruby-on-rails

My ruby on rails app needed bootstrap and js, so I tried to add them.
Even though both styles are in the same folder, some of them are loading and some are not.
im getting
ActionController::RoutingError (No route matches [GET] "/lib/uniform.default.css")
and other css modules
i tried to add everything into my manifest.js but no luck
//= link_tree ../images
//= link_directory ../stylesheets .css
//= link_tree ../../javascript .js
//= link_tree ../../../vendor/javascript .js
//= link_tree ../img
//= link_tree ../css
//= link_tree ../js
//= link_tree ../font
//= link bookmarklet.coffee

You need to create a lib folder in your app/assets/stylesheets, e.g.:
mkdir app/assets/stylesheets/lib
Then put your uniform.default.css file into this folder

Related

Rails application.js: require all js files in a given directory

In application.js I have the following line:
//= require pivottable/dist/pivot.js
However, I want to require all .js files in pivottable/dist. I tried something like:
//= require pivottable/dist/*.js
or this:
//= require pivottable/dist/*
But to no avail. How do I require all js files in a given directory in my application.js?

assets issue in rails 6 for grape-swagger-rails

grape-rails-swagger used to work fine with rails 5
but now with rails 6 lots of things have changed with webpacker now its giving error
Showing /home/faisal-nfl/.rvm/gems/ruby-2.6.2/gems/grape-swagger-rails-0.3.1/app/views/grape_swagger_rails/application/index.html.erb where line #7 raised:
Asset `grape_swagger_rails/application.css` was not declared to be precompiled in production.
Declare links to your assets in `app/assets/config/manifest.js`.
//= link grape_swagger_rails/application.css
and restart your server
I even tried to follow instructions in error but same issue
Not sure why but, I had to add these at top of app/assets/config/manifest.js
//= link grape_swagger_rails/application.css
//= link grape_swagger_rails/application.js
so app/assets/config/manifest.js looks like this now
//= link grape_swagger_rails/application.css
//= link grape_swagger_rails/application.js
//= link_tree ../images
//= link_directory ../stylesheets .css
its working now

Unable to load Bootstrap.min file

I am trying to load bootstrap in my rails application. But it is not working. I had included the bootstrap and sass gems in my Gemfile. The following is my application.js file:
//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
I have also tried using bootstrap-cdn but it did not solve my problem. And I am unable to load bootstrap.min file in the application.
Thanks in advance.
Add .min after bootstrap or rails will search for bootstrap.js instead of bootstrap.min.js
//= require bootstrap.min
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
NOTE: Same applies for bootstrap.min.css

how to effectively organize vendor css and js files togheter in rails assets

(I'm new both to Rails and SO, so excuse if I'm not doing it right)
I am trying to adapt a regular third-party web template in my rails 4 application. I have a vendor folder with other files and subfolders like bootstrap.js, Nivo-slider and Isotope which contain both .css and .js files.
So I moved all files and subfolders to vendor/assets and included //= require_tree ../../../vendor/assets/ in my application.js, as recommended here. So my application.js looks like
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree ../../../vendor/assets/
//= require_tree .
And in my layout file:
<%=stylesheet_link_tag "application.css" -%>
<%=javascript_include_tag "application" -%>
when I execute it on my server I get Sprockets::FileOutsidePaths exception:
Showing /home/valle/RoR/grifo/app/views/layouts/application.html.erb where line #25 raised:
/home/valle/RoR/grifo/vendor/assets/bootstrap.js isn't in paths: /home/valle/RoR/grifo/app/assets/images, /home/valle/RoR/grifo/app/assets/javascripts, /home/valle/RoR/grifo/app/assets/stylesheets, /home/valle/RoR/grifo/lib/assets/circle-flip-slideshow, /home/valle/RoR/grifo/lib/assets/isotope, /home/valle/RoR/grifo/lib/assets/javascripts, /home/valle/RoR/grifo/lib/assets/jflickrfeed, /home/valle/RoR/grifo/lib/assets/magnific-popup, /home/valle/RoR/grifo/lib/assets/mediaelement, /home/valle/RoR/grifo/lib/assets/nivo-slider, /home/valle/RoR/grifo/lib/assets/owl-carousel, /home/valle/RoR/grifo/lib/assets/rs-plugin, /home/valle/RoR/grifo/lib/assets/stylesheets, /home/valle/RoR/grifo/lib/assets/twitterjs, /home/valle/.rvm/gems/ruby-1.9.3-p392/gems/modernizr-rails-2.7.1/vendor/assets/javascripts, /home/valle/.rvm/gems/ruby-1.9.3-p392/gems/turbolinks-2.2.2/lib/assets/javascripts, /home/valle/.rvm/gems/ruby-1.9.3-p392/gems/jquery-rails-3.1.0/vendor/assets/javascripts, /home/valle/.rvm/gems/ruby-1.9.3-p392/gems/coffee-rails-4.0.1/lib/assets/javascripts, /home/valle/.rvm/gems/ruby-1.9.3-p392/bundler/gems/twitter-bootstrap-rails-663760e67b80/app/assets/fonts, /home/valle/.rvm/gems/ruby-1.9.3-p392/bundler/gems/twitter-bootstrap-rails-663760e67b80/app/assets/images, /home/valle/.rvm/gems/ruby-1.9.3-p392/bundler/gems/twitter-bootstrap-rails-663760e67b80/app/assets/javascripts, /home/valle/.rvm/gems/ruby-1.9.3-p392/bundler/gems/twitter-bootstrap-rails-663760e67b80/app/assets/stylesheets, /home/valle/.rvm/gems/ruby-1.9.3-p392/bundler/gems/twitter-bootstrap-rails-663760e67b80/vendor/assets/stylesheets
I thought Sprockets would take all js or css files in all assets folders, precompile, unify and minify them, but now it seems I need to specify the path. How could I solve it?
Besides, is it a problem not to have separated javascript and css folders in vendors?
in rails 4 they have removed vendor folder,so,assets will not server from vendor.
in that Rails.application.config.assets.paths not contains vendor,if you want you have to add the path like
in config/application.rb
config.assets.paths << "#{Rails.root}/vendor/assets"
Update application.js file as
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .
//= require otherJsFiles
And in application.css file require other css file as
*= require otherCssFiles
Require each js and css file in application.js and application.css file placed in vendor/assets.

Precompiling additional assets with Rails

I've been converting a project to use the asset pipeline, but am hitting a wall with one part of the deployment. I have getting the below error after a cap deploy to a production server. (Everything work's ok in development mode without the precompilation of assets)
simile-ajax-api.js isn't precompiled
the project structure is something like
|-app/
|-assets/
|-javascripts/
|- application.js
|-vendor/
|-assets/
|-javascripts/
|-timeline/
|-timeline_ajax/
|-simile-ajax-api.js
In my application.rb I have added the following line
config.assets.paths << "vendor/assets/timeline/timeline_ajax"
and in my production.rb, I have added
precompile_list = %w(app lib vendor).map do |path|
Dir[Rails.root.join(*%W(#{path} assets ** *))].select do |f|
f =~ /(\.js|\.s?css)/
end
end.flatten.map do |f|
f.split(File::SEPARATOR).last
end.uniq
config.assets.precompile = (config.assets.precompile + precompile_list).uniq
config.assets.precompile << Rails.root.join(*%w( vendor assets timeline timeline_ajax simile-ajax-api.js ))
The application.js looks like this:
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require global
//= require_tree ../../../vendor/assets/timeline/timeline_ajax/.
//= require_tree ../../../vendor/assets/timeline/timeline_js/.
//= require timeline-api
//= require jquery.dataTables.min
//= require FixedHeader.min
//= require ColVis.min
//= require jquery.ba-resize.min
//= require jquery-ui
//= require jquery.blockUI
//= require jquery-ui-timepicker-addon
//= require autocomplete-rails
//= require_tree ../../../vendor/assets/javascripts/.
//= require_tree .
and finally, the bit where it is getting loaded in application.html.haml is
%html
%head
- page_title = #page_title ? "#{#page_title}" : ''
%title= strip_tags page_title
:javascript
Timeline_ajax_url= "#{asset_path('simile-ajax-api.js')}";
Timeline_urlPrefix= '/assets/';
Timeline_parameters='bundle=true'
Any idea's where I'm going wrong? Please let me know if there are more details you need.
I think there is no need to state the path like this :
//= require_tree ../../../vendor/assets/timeline/timeline_ajax/.
Just :
//= require_tree timeline/timeline_ajax/.
Because all the assets (no matter where are located ) are looked up the same way . Simply put - if the dir is named assets , the pipeline looks up for files to be included .
EDIT : As it seems your vendor directory structure is a little strange : normally you copy your .js files directly to assets/javascripts directory . I think including assets/vendor/timeline is going to make things complicated . Just copy timeline dir into vendor/assets/javascripts.

Resources