0

I am new to Ruby On Rails and it is the first time I try to run my application in production. However I am getting some troubles.

I have Ruby version 2.1.5 and Rails version 4.2.3

I did the following steps to get my application into production :

  1. I run the command line rake db:create RAILS_ENV=production to create the database related to production environment.

  2. I run rake db:migrate RAILS_ENV=production to run the migration

  3. Then I precompiled the assets with rake assets:precompile RAILS_ENV=production

I looked into my public directory and I have my assets directory that has appeared with all the precompiled files.

When I start my application in production typing rails s -e productionI have all what I have done in development except that none of the javascript works.

I tried to insert in one of my views an alert to see if my javascript works in production. But I have no alert. I started my webserver in development and there I have the alert that works.

<script type="text/javascript">

  alert("Bonjour");

</script>

It looks like my javascript is not available in production, why ? I have read a lot about some similar issues but nothing work would anyone have any idea to help me ?

Here is my config/environments/production.rb file :

Rails.application.configure do


  # Force all access to the app over SSL, use Strict-Transport-Security,
  # and use secure cookies.
  config.force_ssl = false
  # Settings specified here will take precedence over those in config/application.rb.

  # Code is not reloaded between requests.
  config.cache_classes = true
  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true
  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  # Enable Rack::Cache to put a simple HTTP cache in front of your application
  # Add `rack-cache` to your Gemfile before enabling this.
  # For large-scale production use, consider using a caching reverse proxy like
  # NGINX, varnish or squid.
  # config.action_dispatch.rack_cache = true

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  config.assets.css_compressor = :sass
  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = true
  # config.assets.precompile =  ['*.js', '*.css', '*.css.erb'] 
  # config.assets.precompile += %w( *.css *.scss *.js )

  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
  # yet still be able to expire them through the digest params.
  config.assets.digest = true

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  # config.force_ssl = true

  # Use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = :debug

  # Prepend all log lines with the following tags.
  # config.log_tags = [ :subdomain, :uuid ]

  # Use a different logger for distributed setups.
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false
end

And here is my GemFile :

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.3'
#To have charts on rails
gem 'chartkick'
#To read, write spreadsheets
gem 'spreadsheet', '~> 1.0.3'
#To import CSV file and spreadsheets
gem 'roo', '~> 2.1.0'
#To improve tables style
gem 'jquery-datatables-rails', '~> 3.3.0'
gem 'jquery-ui-rails'
#Pour qu'il fonctionne, le gem bcrypt doit être utilisé sous sa version 3.1.9
gem 'bcrypt', '~>3.1.7'

gem 'bootstrap-sass', '3.2.0.0'
# Use mysql as the database for Active Record
gem 'mysql2'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
#gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

I tried to add the line : config.assets.precompile += ['*.js', '*.css', '*.css.erb']but I have the following error :

Sass::SyntaxError: Undefined variable: "$alert-padding"

I also tried to add this line :

config.assets.precompile += %w( *.css *.scss *.js )

I still have the same error.

GDMN
  • 184
  • 2
  • 17
  • do you mind adding the contents of your `application.js` and `application.css` files to the question? – The Fabio Sep 09 '15 at 11:17
  • your `precompile` line is missing a `+`. Should be `config.assets.precompile += [...` – The Fabio Sep 09 '15 at 11:18
  • I did add the `+`but that does not change anything. I tried another precompile commande (shown in my edited post) but still nothing – GDMN Sep 09 '15 at 11:26
  • 1
    Can you please enable the browser debug screen and verify if the JS is really not loading, or if JS errors are happening? It can be that all the JS is loading but because JS errors are happening some of the JS loading is halted. – The Fabio Sep 09 '15 at 22:31
  • I did enable my browser consol and in fact my JS is loading it is present in the DOM of my webpage. But none of my JS work however it works perfectly well in development. How can I target the error ? – GDMN Sep 10 '15 at 07:34
  • are you able to make it available over the internet? I can have a quick look for you – The Fabio Sep 10 '15 at 07:42
  • How can I make it available over the internet ? I now have an error in my consol that talks about Highcharts (the gem I use for charts) but the error does not come from my code it looks like if it is proper to the gem. The error is happening in the `application.js` file so that might be the problem – GDMN Sep 10 '15 at 07:45
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/89235/discussion-between-the-fabio-and-gdmn). – The Fabio Sep 10 '15 at 07:46

1 Answers1

0

This question here seems to resolve a similar (or the same) problem

Their solution was to remove

gem 'jquery-ui-rails'

from the gemfile as jquery-iu is included in jquery-rails gem.

Using both these gems would cause conflict.

Community
  • 1
  • 1
The Fabio
  • 5,369
  • 1
  • 25
  • 55