config.consider_all_requests_local set to true without full trace - ruby-on-rails

I'm working on a new app today this is my Gemfile :
source 'https://rubygems.org'
gem 'rails', '3.2.8'
# Static pages
gem 'high_voltage', '0.9.2'
# Dry Controller
gem 'coast'
# Light Views
gem 'slim'
gem 'formtastic'
# Uploading
gem 'paperclip'
# Authentication
gem 'devise'
gem 'cancan'
# Easing models
gem 'enumerize'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
group :test, :development do
gem 'sqlite3'
gem 'awesome_print'
# For slim genetaror instead default
gem 'slim-rails'
gem 'factory_girl_rails', '~> 4.0'
gem 'forgery'
end
gem 'jquery-rails'
And this an extract from my environment/development.rb :
config.cache_classes = false
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
config.active_support.deprecation = :log
config.action_dispatch.best_standards_support = :builtin
config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
config.assets.compress = false
config.assets.debug = true
Slim::Engine.set_default_options pretty: true, sort_attrs: false
When I go to a page with an error for example this one :
p
= #project.envelopedd
I get a 500 page error instead of the normal debug trace. Any idea to fix this ?

This is a "bug" in the Rails documentation. I got burned by this just now also. There is a PR open on the Rails repo to address the docs issue.
The TL;DR: is that you need to implement show_detailed_exceptions? instead of local_request?

Related

Rails reload requires a new login/clears session

I'm currently finding my dev loop to be rather slow. I'm using the file_watcher config in development.rb to allow the rails server to reload when files have changed. The issue I'm running into, however, is that the reload appears to be clearing the session and I'm taken back to the login screen where I need to login each time a change is made. I'm wondering if I've missed a config setting somewhere or what might be causing it.
Here is my current Gemfile
# frozen_string_literal: true
source 'http://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.1.1'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rack'
gem 'rails', '~> 7.0.2', '>= 7.0.2.4' # Use postgres as the database for Active Record
gem 'pg'
gem 'bunny' # Use Puma as the app server
gem 'puma', '~> 5.6.4' # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder' # gem 'redis', '~> 4.0'
gem 'nio4r', '2.5.5'
gem 'newrelic_rpm'
# Logging
gem 'awesome_print'
gem 'rails_semantic_logger'
# Middlewares
gem 'rack-attack'
gem 'rack-cors'
# Sentry as error tracking
gem 'sentry-raven'
# Send e-mails through Sendgrid
gem 'sendgrid-actionmailer'
# Use Stripe for payments
gem 'stripe'
# Use activeStorage and GCP to deal with uploads
gem 'apollo_upload_server', '2.0.1'
# GraphQL
gem 'graphql', '~> 1.9'
gem 'graphql-batch'
gem 'graphql-pagination', '~> 1.0'
gem 'graphql-persisted_queries'
# Authentication
gem 'active_model_otp', '>= 2.3.1'
gem 'bcrypt', '~> 3.1.7'
gem 'jwt'
gem 'twilio-ruby', '>= 5.66.2'
gem 'oauth2'
gem 'ruby-saml', '~> 1.12.0'
# Authorization
gem 'pundit'
# Pagination
gem 'kaminari', '>= 1.2.2'
# State-machine
gem 'aasm'
# Soft delete
gem 'paranoia', '~> 2.2'
# Model changes history
gem 'paper_trail'
# HTTP Client and compression
gem 'faraday'
gem 'rubyzip'
# Use Active Storage variant
gem 'image_processing', '~> 1.2'
gem 'mini_magick'
# To manage db views so I can test them
gem 'scenic', '>= 1.6.0'
# Allow using .env files
gem 'dotenv-rails', '>= 2.7.6'
# Background workers
gem 'sidekiq', '~>6.4.2'
gem 'sidekiq-cron', '~> 1.3'
# Aply styles to emails
gem 'premailer-rails', '>= 1.11.1'
# Alternative XML parser
gem 'rexml'
gem 'aws-sdk-s3', require: false
# Excel Formulas
gem 'exonio'
# Docusign
gem 'docusign_esign', '3.3.0'
gem 'activerecord-import'
gem 'prometheus_exporter'
gem 'doorkeeper', '~> 5.5.4'
# JSON
gem 'oj'
gem 'redlock'
# Use elastic
gem 'elasticsearch-dsl'
gem 'elasticsearch-model'
gem 'elasticsearch-rails'
# Validation
gem 'validates_zipcode'
gem 'pry-rails'
group :development, :test do
gem 'pry-remote'
gem 'pry-nav'
gem 'rubocop', '>= 1.16.0'
gem 'rubocop-minitest', '>= 0.12.1', require: false
gem 'rubocop-rails', '>= 2.10.1', require: false
gem 'timecop'
gem 'sorbet'
gem 'sorbet-runtime'
gem 'tapioca', require: false
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
# gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'pry-stack_explorer'
# test stack
gem 'assert_json'
gem 'docker-api'
gem 'factory_bot_rails'
gem 'ffaker'
gem 'mocha'
gem 'webmock'
gem 'bullet'
gem 'cypress-on-rails'
gem 'database_cleaner'
gem 'fix-db-schema-conflicts'
end
group :development do
gem 'json2yaml'
gem 'web-console', '>= 4.2.0'
gem 'bootsnap', '>= 1.4.2', require: false
gem 'spring'
gem 'listen', '>= 3.0.5', '< 4'
# letter opener intercepts outgoing e-mails and opens them in a browser
gem 'letter_opener', '>= 1.7.0'
gem 'graphiql-rails', '>= 1.8.0'
gem 'foreman'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 3.36.0'
gem 'selenium-webdriver' # Easy installation and use of web drivers to run system tests with browsers
gem 'webdrivers', '>= 5.0.0' # Code coverage
gem 'rails-controller-testing', '>= 1.0.5'
gem 'simplecov', require: false
gem 'simplecov-summary', github: 'inossidabile/simplecov-summary'
gem 'minitest-ci', require: false
gem 'minitest-hooks'
gem 'minitest-spec-rails'
gem 'minitest-metadata', require: false
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
gem 'netaddr'
# recommended for :after_commit in AASM
gem 'after_commit_everywhere', '~> 0.1', '>= 0.1.5'
gem 'plaid', '~> 14.0.0'
# for lib/tasks/report.rake
gem 'table_print'
gem 'brakeman'
gem 'rb_heap', '~> 1.1'
gem 'sidekiq-unique-jobs'
gem 'array_enum'
and here is my development.rb file:
# typed: ignore
# frozen_string_literal: true
Rails.application.configure do
config.cache_classes = false
config.eager_load = true
config.consider_all_requests_local = true
if Rails.root.join('tmp', 'caching-dev.txt').exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true
config.cache_store = :memory_store
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{2.days.to_i}"
}
else
config.action_controller.perform_caching = false
config.cache_store = :null_store
end
config.active_storage.service = :local
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
config.colorize_logging = true
config.rails_semantic_logger.ap_options = { multiline: true, indent: -2, ruby19_syntax: true }
config.rails_semantic_logger.format = :color
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { host: 'localhost:3002' }
config.after_initialize do
Bullet.enable = true
Bullet.bullet_logger = true
Bullet.rails_logger = true
end
end
Let me know if there's any other information you need and I'll gladly share.
Update: It appears that even with config.file_watcher = ActiveSupport::EventedFileUpdateChecker commented out in development.rb, saving the file still causes a reload to occur. I've inspected the cookies (CookieJar) and they seem to be cleared everytime the reload happens.

Coffeescript Not Updating in Heroku

So, I've made a few changes to my web app that's hosted on Heroku and then I did my usual
git add .
git commit -m
git push
git push heroku
There were no errors during any of those commands... But then when I check the website, it seems like all the changes got pushed except for the changes in my Coffeescript file. And when I look at the source code of the webpage, I see the old JS code... It's like it skipped the changes in the coffeescript file.
There were no errors in the push and the coffee script file was in the list of files when I did the commit.
Here's what I've tried so far:
Add to my gemfile
gem 'therubyracer'
Add to Production.rb:
config.assets.compile = true
config.assets.initialize_on_precompile = true
Restarted Heroku server
Deleted my browser data...
None of this worked. Someone please help or point me in the right direction.
This is my Gemfile:
source 'https://rubygems.org'
ruby "2.2.1"
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.3.6'
gem 'sprockets-rails'
# 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'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'gon'
group :development, :test do
gem 'byebug'
end
group :development do
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
gem 'web-console', '~> 2.0'
gem 'spring'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '2.11.1'
gem 'therubyracer'
end
And this is production.rb File:
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.initialize_on_precompile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
end
Thanks!
you likely have an error in your js or css that is keeping your assets from compiling. try compiling locally by running:
rake assets:precompile
then add and commit again before re-deploying.

Asset pipeline not working on Rails 3 project

I am setting up a legacy Rails 3 project, ruby 1.9.3.
The asset pipeline is not working.
At this moment I have the following error:
ActionView::Template::Error (application.css isn't precompiled):
Here is my development.rb file:
MyProj::Application.configure do
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
config.serve_static_assets = false
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
# Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict
# Do not compress assets
config.assets.compress = false
config.assets.compile = false
config.assets.debug = true
end
and here is my Gemfile
source "http://rubygems.org"
#gem 'pg'
gem 'mysql2'
gem 'rails', '3.2.3'
gem "authlogic", "3.0.3"
gem 'carrierwave'
gem 'rmagick'
gem 'fog'
gem "will_paginate", "~> 3.0"
gem "friendly_id", "~> 3.2.1"
gem 'activemerchant'
gem 'delayed_job_active_record'
gem 'i18n', '0.6.0'
gem 'ajaxful_rating_jquery', :git => "git://github.com/lshemesh/ajaxful_rating_jquery.git"
#gem 'acts_as_state_machine'
gem 'dynamic_form'
gem 'heroku'
gem 'jquery-rails'
gem 'state_machine'
#gem 'bartt-ssl_requirement', :require => 'ssl_requirement'
gem 'faker', '0.3.1'
gem 'populator', '0.2.5'
gem 'execjs'
gem 'daemons'
gem 'rack-ssl-enforcer'
gem 'braintree'
gem 'flag_shih_tzu'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
gem 'honeypot-captcha'
gem 'famfamfam_flags_rails'
gem 'language_list'
gem 'simple_captcha2', require: 'simple_captcha'
gem 'haml'
gem 'haml-rails'
# group :development do
# gem 'thin'
# end
group :production do
gem 'unicorn'
end
group :development, :test do
gem 'rspec-rails'
end
group :test do
gem 'cucumber-rails', require: false
gem 'database_cleaner'
gem 'poltergeist'
gem 'factory_girl'
# gem 'autotest-rails'
gem 'factis'
gem 'email_spec'
end
group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'uglifier'
end
I have the following on my application.rb
config.assets.enabled = true
# Add asset path to find our fonts
config.assets.paths << Rails.root.join("app", "assets", "fonts")
config.assets.paths << Rails.root.join("app", "assets", "javascripts")
config.assets.paths << Rails.root.join("app", "assets", "stylesheets")
config.assets.paths << Rails.root.join("app", "assets", "images")
And this is my application.css.scss
/*
*= require_self
*= require_tree .
*= require famfamfam-flags
*/
Any help?
Thanks

How come helper.distance_of_time_in_words_to_now Time.now works in development but not production

I can call
helper.distance_of_time_in_words_to_now Time.now in development and it works just fine, but for some reason in production I am now getting translation missing: en.datetime.distance_in_words.less_than_x_minutes
What can I do to fix this?
Here is my gemfile:
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.5'
gem 'pg', '0.17.1'
gem 'sass-rails', '~> 4.0.3'
gem 'coffee-rails', '~> 4.0.1'
gem 'uglifier', '>= 2.5.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
gem "bootstrap-sass", "~> 3.1.1.1"
gem "will_paginate", "~> 3.0.5"
gem "bootstrap-will_paginate", "~> 0.0.10"
gem "redcarpet", "~> 3.1.1"
# 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.7'
group :development, :test do
gem "foreman", "~> 0.63.0"
gem 'annotate', '~> 2.6.3'
gem 'rspec-rails', '~> 2.14.2'
gem "guard-rspec", "~> 4.2.3", :require => false
gem "factory_girl_rails", "~> 4.4.0"
gem "guard-spork", "~> 1.5.1"
gem "spork-rails", "~> 4.0.0"
# gem 'spork-rails', github: 'sporkrb/spork-rails'
end
group :test do
gem 'rb-fsevent', '~> 0.9.4', :require => false
gem "growl", "~> 1.0.3"
# # Test gems for Linux
# gem 'rb-inotify', '0.8.8'
# gem 'libnotify', '0.5.9'
# # Test gems for Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
gem 'dotenv-rails'
# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.1.2'
# Use unicorn as the app server
gem 'unicorn', '~> 4.8.2'
gem 'unicorn-worker-killer', "~> 0.4.2"
# Authentication
gem "devise", "~> 3.2.4"
gem "cancan", "~> 1.6.10"
gem "geocoder", "~> 1.2.0"
gem "carrierwave", "~> 0.10.0"
gem "mini_magick", "~> 3.7.0"
gem "fog", "~> 1.22.0"
gem "unf", "~> 0.1.3" # for use with the fog gem
gem "validate_url", "~> 0.2.0"
gem 'psych', '~> 2.0.5'
gem 'paper_trail', '~> 3.0.1'
gem 'faraday', '~> 0.9.0'
# Use Capistrano for deployment
group :development do
gem "capistrano", "~> 3.2.1"
gem 'capistrano-rbenv', '~> 2.0'
gem "capistrano-bundler", "~> 1.1.0"
gem "capistrano-rails", "~> 1.1.0"
end
# Use debugger
# gem 'debugger', group: [:development, :test]
And here if my production.rb:
Example::Application.configure do
# 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 thread 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
config.action_controller.perform_caching = true
# 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 Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = false
# 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 = false
# Generate digests for assets URLs.
config.assets.digest = true
# Version of your assets, change this if you want to expire all your assets.
config.assets.version = '1.0'
# 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
# Set to :debug to see everything in the log.
config.log_level = :info
# 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"
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# config.assets.precompile += %w( search.js )
# 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 can not be found).
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
# Disable automatic flushing of the log to improve performance.
# config.autoflush_log = false
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# For devise
config.action_mailer.default_url_options = { :host => 'example.com' }
end
I figured out the problem. i18n gem version 0.6.10 was yanked, but I was using that in my system. As soon as I rolled back to 0.6.9 everything worked fine.

loading page very slow because of missing jquery file in production mode

I use Nginx + Passenger + Rails 3 to run my website,
However, the page's loading time is too long.
I used the chrome inspector to see the problem, it showed me a jQuery file is missing ?
How could I solve it ?
Here's the Gemfile
source 'http://rubygems.org'
gem 'rails', '3.2.12'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'nokogiri'
# add will_paginate
gem 'will_paginate', '~> 3.0'
# Gems used only for assets and not required
# in production environments by default.
#group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'bootstrap-sass', '~> 2.3.2.0'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
gem 'jquery-ui-rails'
#end
gem 'hirb-unicode'
gem 'jquery-rails'
gem 'carrierwave'
# gem 'sidekiq'
#URL Command list
gem 'awesome_print', :require => 'ap'
gem 'quiet_assets', :group => :development
gem 'rails-erd', :group => :development
gem 'tinymce-rails'
gem 'haml'
#https://github.com/andi/simple-navigation/wiki/Installation
gem "simple-navigation"
#https://github.com/pdf/simple-navigation-bootstrap
gem 'simple-navigation-bootstrap'
#gem 'open-uri'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
gem 'pg'
gem 'taps'
gem 'devise'
#http://stackoverflow.com/questions/6379950/gmail-smtp-with-rails-3
#gem 'tlsmail'
gem 'cancan'
gem 'pry'
gem 'pry-remote'
gem 'pry-nav'
gem 'ipaddress'
# https://github.com/collectiveidea/delayed_job
# gem 'delayed_job_active_record'
# gem 'daemons'
gem "resque"
gem 'resque_mailer'
gem 'resque-scheduler'
gem 'rubyzip'
gem 'whenever', :require => false
Look at your Manifest file (app/assets/javascripts/application.js). Probably there you have something wrong. The order of files matters:
//= require jquery
//= require jquery_ujs
//= require bootstrap-select
//= require twitter/bootstrap
//= require turbolinks
//= require jquery.ui
....
Or check out your configs in config/environments/production.rb
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.cache_store = :dalli_store
#config.cache_store = :mem_cache_store
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true

Resources