Dear Ben Point taken as regards the ruby versions discrepancy.
I was able to solve the problem with the help of heroku support personnel. There were two issues: One issue with the image_tag options syntax... This prevented the asset pipeline to reference the image filename with the harsh extension (the long file name created by asset pipeline). Once, I fixed this problem, the images could still not be found due to the fact that they had JPG extension in capital. A photo editing program had turned all the extensions jpg in capitals. This did not cause any problem in the development environment, but caused problem in the production environment with images not being found. Besides, everytime I changed these extensions back to small jpg, the git local repository would not take these changes into account. Very strange indeed. I ended up recreating a new git repository and redeploy the app with all pictures in small jpg extensions, and then it worked. Thank you for taking the time to respond to my query. Best regards Mazembo Mavungu Eddy On Fri, Mar 6, 2015 at 3:05 AM, Ben Wanicur <[email protected]> wrote: > Hi Mazembo > > Whatever your problem with gems may be, I cannot imagine ever using > different versions of Ruby in development versus production (at least major > version differences like 1.9 and 2.0). That sounds like a bad tradeoff, > just to use some gem. I would find another way to use that gem or find an > alternate gem. And as a last resort, I would consider hand-coding my own > solution before I would use different versions of Ruby between dev and > production. > > Per your asset compilation problem... Try running the asset > pre-compilation with the --trace flag and perhaps post those results on > this thread. > > > > On Sun, Mar 1, 2015 at 8:35 AM, Mazembo <[email protected]> wrote: > >> I need help to sort out problems of asset pipeline with my app. Can >> anyone have look at what I am missing? Thanks in advance. >> >> I am using the following rails 3.2.13, ruby 1.9.3 (for development) and >> ruby 2.0.0 (for production on heroku). ( I am using a different version of >> ruby on production as a gem called bybosa could not be installed with the >> development version of ruby… I am not sure if this is the source of the >> problem. Probably not…). >> >> I have precompile the assets locally running: bundle exec rake >> assets:precompile RAILS_ENV=production. The assets get precompiled well and >> placed in public/assets/ directory. However, this process runs with an >> error : "can't dump anonymous class" errors. This seems to be associated >> with sass and sprockets… but the compilation get completed with files >> placed in the public/assets directory. The original images, and the same >> image names with long hash extensions. I commit everything to git and >> deploy from git to heroku. Heroku does not run assets compilation as there >> is a manifest file in the public/assets directory. >> >> The application gets deployed well, but the images are not served >> properly. CSS and JS are served. The styling of the layout is as expected >> at least. So no problem with CSS and JS (that I can note). >> >> *The website as it now appears * >> >> *http://www.cdh-uk.org/ <http://www.cdh-uk.org/>* >> >> >> >> *The github app: * >> >> *https://github.com/mazembo/cdhuk <https://github.com/mazembo/cdhuk>* >> >> >> >> Only two images are served. Other 10 images are not served. Heroku logs >> shows that the error 404 not found for those images. And the path for those >> images are /assets/image_name. The two images that are served have these >> paths /assets/image_name + hash(combination of letters and numbers produced >> by the asset pipeline during the precompile operation). When you inspect >> elements on the webpage, only those two images that get displayed have the >> long hash after the image name. All othe images do not have the hash… >> >> I wonder why the webserver is not able to find the other images. Why is >> the webserver not pointing to the images as precompile by the asset >> pipeline with the long hash extension? >> >> In the development environment all images are well displayed. Here, >> images are referenced by their simple name (without the asset pipeline >> extensions). >> >> *My gemfile * >> >> source 'http://rubygems.org' >> >> >> >> ruby "2.0.0" >> >> >> >> gem 'rails'*, *'3.2.13' >> >> >> >> # Bundle edge Rails instead: >> >> # gem 'rails', :git => 'git://github.com/rails/rails.git' >> >> >> >> group *:development**, **:test**, **:production **do* >> >> # gem 'sqlite3' >> >> gem 'pg' >> >> *end* >> >> >> >> >> >> # 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 'twitter-bootstrap-rails' >> >> # See https://github.com/sstephenson/execjs#readme for more supported >> runtimes >> >> # gem 'therubyracer', :platforms => :ruby >> >> >> >> gem 'uglifier'*, *'>= 1.0.3' >> >> #end >> >> # Use SCSS for stylesheets >> >> gem 'bootstrap-sass'*, *'3.1.1.0' >> >> gem 'sass-rails'*, *'>= 3.2' >> >> >> >> gem 'jquery-rails' >> >> >> >> gem 'turbolinks' >> >> gem 'rails_12factor'*, *group: *:production* >> >> # 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' >> >> >> >> # Refinery CMS >> >> gem 'refinerycms'*, *'~> 2.1.0' >> >> >> >> # Optionally, specify additional Refinery CMS Extensions here: >> >> gem 'refinerycms-acts-as-indexed'*, *'~> 1.0.0' >> >> gem 'refinerycms-blog'*, *'~> 2.1.0' >> >> gem 'refinerycms-inquiries'*, *'~> 2.1.0' >> >> gem 'refinerycms-search'*, *'~> 2.1.0' >> >> gem 'refinerycms-page-images'*, *'~> 2.1.0' >> >> gem "refinerycms-news"*, *'~> 2.1.0' >> >> #gem 'refinerycms-portfolio', :git => 'git:// >> github.com/refinery/refinerycms-portfolio.git', :branch => '2-0-stable' >> >> gem 'refinerycms-videojs' >> >> #gem 'refinerycms-memberships', '2.0' >> >> #gem 'refinerycms-calendar', '~>2.0.0' >> >> #gem 'refinerycms-bootstrap', :github => >> 'fernandoaleman/refinerycms-bootstrap', :branch => 'master' >> >> >> >> >> >> >> >> group *:development **do* >> >> gem 'jazz_hands' >> >> *end* >> >> *My config/application.rb file * >> >> require File*.*expand_path*(*'../boot'*, **__FILE__**)* >> >> >> >> # Pick the frameworks you want: >> >> require "active_record/railtie" >> >> require "action_controller/railtie" >> >> require "action_mailer/railtie" >> >> require "active_resource/railtie" >> >> require "sprockets/railtie" >> >> # require "rails/test_unit/railtie" >> >> >> >> *if defined?**(*Bundler*)* >> >> # If you precompile assets before deploying to production, use this >> line >> >> Bundler*.*require*(**Rails*.*groups*(**:assets **=> *%w(development >> test)*))* >> >> # If you want your assets lazily compiled in production, use this line >> >> # Bundler.require(:default, :assets, Rails.env) >> >> *end* >> >> >> >> *module *Renaissance2 >> >> *class *Application < Rails*::*Application >> >> # Settings in config/environments/* take precedence over those >> specified here. >> >> # Application configuration should go into files in >> config/initializers >> >> # -- all .rb files in that directory are automatically loaded. >> >> >> >> # Custom directories with classes and modules you want to be >> autoloadable. >> >> # config.autoload_paths += %W(#{config.root}/extras) >> >> >> >> # Only load the plugins named here, in the order given (default is >> alphabetical). >> >> # :all can be used as a placeholder for all plugins not explicitly >> named. >> >> # config.plugins = [ :exception_notification, :ssl_requirement, :all >> ] >> >> >> >> # Activate observers that should always be running. >> >> # config.active_record.observers = :cacher, :garbage_collector, >> :forum_observer >> >> >> >> # Set Time.zone default to the specified zone and make Active Record >> auto-convert to this zone. >> >> # Run "rake -D time" for a list of tasks for finding time zone >> names. Default is UTC. >> >> # config.time_zone = 'Central Time (US & Canada)' >> >> >> >> # The default locale is :en and all translations from >> config/locales/*.rb,yml are auto loaded. >> >> # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', >> '*.{rb,yml}').to_s] >> >> # config.i18n.default_locale = :de >> >> >> >> # Configure the default encoding used in templates for Ruby 1.9. >> >> config*.*encoding = "utf-8" >> >> >> >> # Configure sensitive parameters which will be filtered from the log >> file. >> >> config*.*filter_parameters += *[**:password**]* >> >> >> >> # Enable escaping HTML in JSON. >> >> config*.*active_support*.*escape_html_entities_in_json = true >> >> >> >> # Use SQL instead of Active Record's schema dumper when creating the >> database. >> >> # This is necessary if your schema can't be completely dumped by the >> schema dumper, >> >> # like if you have constraints or database-specific column types >> >> # config.active_record.schema_format = :sql >> >> >> >> # Enforce whitelist mode for mass assignment. >> >> # This will create an empty whitelist of attributes available for >> mass-assignment for all models >> >> # in your app. As such, your models will need to explicitly >> whitelist or blacklist accessible >> >> # parameters by using an attr_accessible or attr_protected >> declaration. >> >> config*.*active_record*.*whitelist_attributes = true >> >> >> >> # Enable the asset pipeline >> >> config*.*assets*.*enabled = true >> >> >> >> # Version of your assets, change this if you want to expire all your >> assets >> >> config*.*assets*.*version = '1.0' >> >> config*.*assets*.*initialize_on_precompile = true >> >> *end* >> >> *end* >> >> >> >> >> >> *My config/environment/production.rb* >> >> Renaissance2*::*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 >> >> >> >> # Full error reports are disabled and caching is turned on >> >> config*.*consider_all_requests_local = false >> >> config*.*action_controller*.*perform_caching = true >> >> >> >> # Disable Rails's static asset server (Apache or nginx will already do >> this) >> >> config*.*serve_static_assets = true >> >> >> >> # Compress JavaScripts and CSS >> >> config*.*assets*.*compress = true >> >> >> >> # Don't fallback to assets pipeline if a precompiled asset is missed >> >> config*.*assets*.*compile = true >> >> >> >> # Generate digests for assets URLs >> >> config*.*assets*.*digest = true >> >> >> >> # Defaults to nil and saved in location specified by >> config.assets.prefix >> >> # config.assets.manifest = YOUR_PATH >> >> >> >> # 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 >> >> >> >> #for heroku >> >> config*.*action_dispatch*.*x_sendfile_header = nil >> >> # Force all access to the app over SSL, use Strict-Transport-Security, >> and use secure cookies. >> >> # config.force_ssl = true >> >> >> >> # See everything in the log (default is :info) >> >> # 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" >> >> >> >> # Precompile additional assets (application.js, application.css, and >> all non-JS/CSS are already added) >> >> # config.assets.precompile += %w( search.js ) >> >> >> >> # Disable delivery errors, bad email addresses will be ignored >> >> *if *config*.*respond_to?*(**:action_mailer**)* >> >> # config.action_mailer.raise_delivery_errors = false >> >> *end* >> >> >> >> # Enable threaded mode >> >> # config.threadsafe! >> >> >> >> # 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* >> >> >> >> # Log the query plan for queries taking more than this (works >> >> # with SQLite, MySQL, and PostgreSQL) >> >> # config.active_record.auto_explain_threshold_in_seconds = 0.5 >> >> *end* >> >> >> >> *What I have tried without success:* >> >> *1. **I tried to precompile the assets many times, but nothing >> changes* >> >> *2. **I tried to disable the use of the asset pipeline in the >> production, but it did not change anything * >> >> *3. **I tried suggestions on this stackoverflow issue: >> http://stackoverflow.com/questions/25159841/rails-3-2-13-assets-are-not-displayed-in-production >> <http://stackoverflow.com/questions/25159841/rails-3-2-13-assets-are-not-displayed-in-production> >> Without success* >> >> *4. **I have also looked at this heroku support page: >> https://devcenter.heroku.com/articles/rails-asset-pipeline >> <https://devcenter.heroku.com/articles/rails-asset-pipeline>* >> >> >> >> >> >> Mazembo Mavungu Eddy, PhD >> >> -- >> -- >> SD Ruby mailing list >> [email protected] >> http://groups.google.com/group/sdruby >> --- >> You received this message because you are subscribed to the Google Groups >> "SD Ruby" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > -- > SD Ruby mailing list > [email protected] > http://groups.google.com/group/sdruby > --- > You received this message because you are subscribed to the Google Groups > "SD Ruby" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby --- You received this message because you are subscribed to the Google Groups "SD Ruby" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
