Rails referencing assets in models Rails 4 and CDN

I have a method inside a Model that returns an image URL as a String such as: "assets/myImage.png", this works well in production without CDN, the image is being served.

Using the CDN (Cloudfront) serves only files with its fingerprint or that's what I've read. So when I open up my Google Console it shows "assets/myImage.png", but not the fingerprinted version, so it obviously doesn't show the image.

In short: I need to know how to use a helper method that returns the fingerprinted version of my image inside a Model.

Any help would be great!

Answers


I believe you can access the Sprockets helper using:

  • self.class.helpers.asset_path('application.css') or
  • self.class.helpers.asset_digest_digest('application.css')

Both of these are a backward way of getting access to the helpers that Sprockets uses for fingerprinting assets in production. Does that work?

Based on this SO answer


You should be able to get the URL from the ruby aws-sdk gem.

Here are the docs for AWS::CloudFront::Client

Update: This answer is wrong. See my different answer below.


I actually don't think my above answer will work. Instead, try this instide production.rb

config.action_controller.asset_host = "d24xjtg100euk4.cloudfront.net"

That should append the CDN url to all your rails helpers (like image_helper).

You could also roll your own custom helper that takes the asset location and concatenates it with the CDN url.

Based on this blog post: SETTING UP A CLOUDFRONT CDN FOR RAILS

EDIT: Posted another answer below using Sprockets helper method.


Need Your Help

modifying an element in master page based on action in content page

asp.net-mvc-3

I have a Link element in the Master Page. This element is initially invisible.

What alternatives are there to the MATLAB Editor?

editor matlab

Some things that I personally find as shortcomings in the MATLAB Editor:

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.