Re: [Rails] Problem serving image assets

2019-03-06 Thread Colin Law
I don't understand how it ever worked at all, now that I understand a
bit more.  I have a .js.coffee file in assets/javascripts that has in
it lines like
@marker_icon_red = new OpenLayers.Icon('/assets/red_pin.png', size, offset);
so there is nothing to convert the url to digest version.  Yet this
has been working fine for several years.  So somehow the url
/assets/red_pin.img has been satisfied.

I can only think that somehow copies of the original .png files
existed in public/assets, along with the digest versions.  Perhaps
they were copied there on the server by someone years ago to make it
work and they have been there ever since.  I think the proper solution
is to change the file to .js.coffee.erb and then I can use the helper
as described in section 2.3.3
https://guides.rubyonrails.org/asset_pipeline.html

On Wed, 6 Mar 2019 at 15:29, Walter Lee Davis  wrote:
>
>
> > On Mar 6, 2019, at 10:16 AM, Colin Law  wrote:
> >
> > On Wed, 6 Mar 2019 at 14:47, Walter Lee Davis  wrote:
> >>
> >>
> >>> On Mar 6, 2019, at 9:27 AM, Walter Lee Davis  wrote:
> >>>
> >>> The asset pipeline needs a JavaScript interpreter to work correctly on 
> >>> the server. I usually install whatever version of Node.js is available in 
> >>> a package manager. Alternatively, you can use the gem `therubyracer` to 
> >>> do the same thing. If you have that dependency filled, then I'm fresh out 
> >>> of ideas.
> >
> > Thanks for the suggestions Walter
> > I have checked nodejs is installed (node -v shows 10.x)
> >
> >>
> >> Make sure that this works, on the server:
> >>
> >> RAILS_ENV=production rake assets:precompile
> >
> > Yes it does work, it outputs nothing, as expected.  The code has been
> > checked out of the git repo, which doesn't include the public/assets
> > folder and the compiled assets are there ok.
> > I just realised that I was wrong about the css, that isn't found either.
> >
> > One thing that confuses me, in the nginx log I see entries like
> > GET /assets/red_pin.png HTTP/1.1" 404 457 ...
> > Should the url not be the full name including the digest?
>
> Yes, at the NGINX level, the request should be for the actual file path. In 
> the Rails app, there would be a helper call like asset_url('red_pin.png'), 
> which would generate the full path including the fingerprint.
>
> > Even more confusingly I am informed that if I access the server from
> > another location then the images do appear, but I wonder whether that
> > one is seeing cached images.  I haven't managed to capture the log
> > when that site issues a full refresh yet.
>
> Yes. If you want to bust the cache, there's an assets_version config 
> attribute you can change. I think it's 1 by default, and you can increment 
> it, and then precompile assets. Everything will change. But the question you 
> have above would trump that, I think.
>
> Walter
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/6127B556-0CB8-43CF-913D-A13BF4F60E26%40wdstudio.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLuEG653QmEwLHaRJqArknTV-Yc3mOVNA0n0p1XK0yY%2Bkw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Problem serving image assets

2019-03-06 Thread Walter Lee Davis


> On Mar 6, 2019, at 10:29 AM, Walter Lee Davis  wrote:
> 
>> 
>> On Mar 6, 2019, at 10:16 AM, Colin Law  wrote:
>> 
>> On Wed, 6 Mar 2019 at 14:47, Walter Lee Davis  wrote:
>>> 
>>> 
 On Mar 6, 2019, at 9:27 AM, Walter Lee Davis  wrote:
 
 The asset pipeline needs a JavaScript interpreter to work correctly on the 
 server. I usually install whatever version of Node.js is available in a 
 package manager. Alternatively, you can use the gem `therubyracer` to do 
 the same thing. If you have that dependency filled, then I'm fresh out of 
 ideas.
>> 
>> Thanks for the suggestions Walter
>> I have checked nodejs is installed (node -v shows 10.x)
>> 
>>> 
>>> Make sure that this works, on the server:
>>> 
>>> RAILS_ENV=production rake assets:precompile
>> 
>> Yes it does work, it outputs nothing, as expected.  The code has been
>> checked out of the git repo, which doesn't include the public/assets
>> folder and the compiled assets are there ok.
>> I just realised that I was wrong about the css, that isn't found either.
>> 
>> One thing that confuses me, in the nginx log I see entries like
>> GET /assets/red_pin.png HTTP/1.1" 404 457 ...
>> Should the url not be the full name including the digest?
> 
> Yes, at the NGINX level, the request should be for the actual file path. In 
> the Rails app, there would be a helper call like asset_url('red_pin.png'), 
> which would generate the full path including the fingerprint. 

I just realized this answer wasn't entirely clear. When I said the "actual file 
path", I meant including the fingerprint. 

Another idea: have a hunt in the rake -T output for assets things you can do. 
One of them is purge or flush or something like that. Really get in there and 
force it to re-do everything.

Walter

> 
>> Even more confusingly I am informed that if I access the server from
>> another location then the images do appear, but I wonder whether that
>> one is seeing cached images.  I haven't managed to capture the log
>> when that site issues a full refresh yet.
> 
> Yes. If you want to bust the cache, there's an assets_version config 
> attribute you can change. I think it's 1 by default, and you can increment 
> it, and then precompile assets. Everything will change. But the question you 
> have above would trump that, I think.
> 
> Walter
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/6127B556-0CB8-43CF-913D-A13BF4F60E26%40wdstudio.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/0B78C247-4879-49B0-9EB4-3F18D030ABB4%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Problem serving image assets

2019-03-06 Thread Walter Lee Davis


> On Mar 6, 2019, at 10:16 AM, Colin Law  wrote:
> 
> On Wed, 6 Mar 2019 at 14:47, Walter Lee Davis  wrote:
>> 
>> 
>>> On Mar 6, 2019, at 9:27 AM, Walter Lee Davis  wrote:
>>> 
>>> The asset pipeline needs a JavaScript interpreter to work correctly on the 
>>> server. I usually install whatever version of Node.js is available in a 
>>> package manager. Alternatively, you can use the gem `therubyracer` to do 
>>> the same thing. If you have that dependency filled, then I'm fresh out of 
>>> ideas.
> 
> Thanks for the suggestions Walter
> I have checked nodejs is installed (node -v shows 10.x)
> 
>> 
>> Make sure that this works, on the server:
>> 
>> RAILS_ENV=production rake assets:precompile
> 
> Yes it does work, it outputs nothing, as expected.  The code has been
> checked out of the git repo, which doesn't include the public/assets
> folder and the compiled assets are there ok.
> I just realised that I was wrong about the css, that isn't found either.
> 
> One thing that confuses me, in the nginx log I see entries like
> GET /assets/red_pin.png HTTP/1.1" 404 457 ...
> Should the url not be the full name including the digest?

Yes, at the NGINX level, the request should be for the actual file path. In the 
Rails app, there would be a helper call like asset_url('red_pin.png'), which 
would generate the full path including the fingerprint. 

> Even more confusingly I am informed that if I access the server from
> another location then the images do appear, but I wonder whether that
> one is seeing cached images.  I haven't managed to capture the log
> when that site issues a full refresh yet.

Yes. If you want to bust the cache, there's an assets_version config attribute 
you can change. I think it's 1 by default, and you can increment it, and then 
precompile assets. Everything will change. But the question you have above 
would trump that, I think.

Walter

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/6127B556-0CB8-43CF-913D-A13BF4F60E26%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Problem serving image assets

2019-03-06 Thread Colin Law
On Wed, 6 Mar 2019 at 14:47, Walter Lee Davis  wrote:
>
>
> > On Mar 6, 2019, at 9:27 AM, Walter Lee Davis  wrote:
>>
> > The asset pipeline needs a JavaScript interpreter to work correctly on the 
> > server. I usually install whatever version of Node.js is available in a 
> > package manager. Alternatively, you can use the gem `therubyracer` to do 
> > the same thing. If you have that dependency filled, then I'm fresh out of 
> > ideas.

Thanks for the suggestions Walter
I have checked nodejs is installed (node -v shows 10.x)

>
>  Make sure that this works, on the server:
>
> RAILS_ENV=production rake assets:precompile

Yes it does work, it outputs nothing, as expected.  The code has been
checked out of the git repo, which doesn't include the public/assets
folder and the compiled assets are there ok.
I just realised that I was wrong about the css, that isn't found either.

One thing that confuses me, in the nginx log I see entries like
GET /assets/red_pin.png HTTP/1.1" 404 457 ...
Should the url not be the full name including the digest?
Even more confusingly I am informed that if I access the server from
another location then the images do appear, but I wonder whether that
one is seeing cached images.  I haven't managed to capture the log
when that site issues a full refresh yet.

Colin

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLv1ysWa9qmLgbtWH3R4ExfUfP%3Dpkcnb%3D%3DiFumX1Yk-S%3Dw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Problem serving image assets

2019-03-06 Thread Walter Lee Davis


> On Mar 6, 2019, at 9:27 AM, Walter Lee Davis  wrote:
> 
>> 
>> On Mar 6, 2019, at 7:15 AM, Colin Law  wrote:
>> 
>> I hope someone can help me with an assets problem.  I have had to
>> rebuild a production server and images are no longer getting served.
>> Unfortunately the working system is no more so I can't compare what I
>> have with what used to work in order to help diagnose the problem.
>> 
>> I am using Rails 4.2 with nginx on an Ubuntu 16.04 server with
>> capistrano to deploy it and I have not changed the application (which
>> is git controlled).  However it is now running on a later version of
>> Ubuntu so the tools there have been updated, including nginx.
>> 
>> The problem is that image assets are not being served, the javascript
>> and css are working.  I can see (on the server) that the assets have
>> been precompiled and I can see in public/assets image files such as
>> blue_pin-.png where  is a big long number.
>> However in the browser console I can see it attempt to fetch
>> /assets/blue_pin.png without the digest, and this fails.
>> 
>> The code in the app that references the image is in coffescript and is a line
>> @marker_icon_blue = new OpenLayers.Icon('/assets/blue_pin.png', size, 
>> offset);
>> 
>> I used to know how all this is supposed to work, but I have been away
>> from Rails for a while and the brain cells seem to have atrophied
>> rather, and perusing the docs has failed to re-invigorate them
>> sufficiently, so if someone could suggest what might be going on I
>> would be very grateful.
>> 
>> Colin
> 
> The asset pipeline needs a JavaScript interpreter to work correctly on the 
> server. I usually install whatever version of Node.js is available in a 
> package manager. Alternatively, you can use the gem `therubyracer` to do the 
> same thing. If you have that dependency filled, then I'm fresh out of ideas.
> 
> Walter

Other than, of course, making sure you have sprockets and sprockets-rails 
listed in your Gemfile.lock. But you said you had run the rake 
assets:precompile task, or at least I assumed you had, if you said that your 
assets were precompiled already. Make sure that this works, on the server:

RAILS_ENV=production rake assets:precompile

If you do that, and you don't get any errors, you'll have two possible 
outcomes: 

1. You'll get an output line for each asset (maybe two lines, with one being 
.gz of the previous).
2. You'll get nothing at all (this is okay and normal, it means that the assets 
did not change since the last invocation of the command).

If you started up a new server, it may have a different secret key or assets 
version, and that would change the fingerprints on all the precompiled assets. 
Running the precompile step again would fix that.

Walter

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/D57C1273-E186-4B74-9D94-7D3E854E0FCE%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Problem serving image assets

2019-03-06 Thread Walter Lee Davis


> On Mar 6, 2019, at 7:15 AM, Colin Law  wrote:
> 
> I hope someone can help me with an assets problem.  I have had to
> rebuild a production server and images are no longer getting served.
> Unfortunately the working system is no more so I can't compare what I
> have with what used to work in order to help diagnose the problem.
> 
> I am using Rails 4.2 with nginx on an Ubuntu 16.04 server with
> capistrano to deploy it and I have not changed the application (which
> is git controlled).  However it is now running on a later version of
> Ubuntu so the tools there have been updated, including nginx.
> 
> The problem is that image assets are not being served, the javascript
> and css are working.  I can see (on the server) that the assets have
> been precompiled and I can see in public/assets image files such as
> blue_pin-.png where  is a big long number.
> However in the browser console I can see it attempt to fetch
> /assets/blue_pin.png without the digest, and this fails.
> 
> The code in the app that references the image is in coffescript and is a line
> @marker_icon_blue = new OpenLayers.Icon('/assets/blue_pin.png', size, offset);
> 
> I used to know how all this is supposed to work, but I have been away
> from Rails for a while and the brain cells seem to have atrophied
> rather, and perusing the docs has failed to re-invigorate them
> sufficiently, so if someone could suggest what might be going on I
> would be very grateful.
> 
> Colin

The asset pipeline needs a JavaScript interpreter to work correctly on the 
server. I usually install whatever version of Node.js is available in a package 
manager. Alternatively, you can use the gem `therubyracer` to do the same 
thing. If you have that dependency filled, then I'm fresh out of ideas.

Walter

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/502910B4-C0E2-45D2-B045-21B729C8323E%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.