Another issue I came across while working with CarrierWave. After rebooting a VM Amazon started too complain “request time too skewed”:
Warning: S3::putObject(): RequestTimeTooSkewed The difference between the request time and the current time is to large. in x on line 14
This one is another simple fix, just make sure your system time is correct. I’d been using a VM and it had run forward by a few hours. Setting it back manually resolved the error.
After working with CarrierWave for a couple of days a few of my images started disappearing. It took a while to work out what was causing it, but thankfully the fix is pretty easy:
#Set fog_public in your initialiser to true
config.fog_public = false
config.fog_public = true
Alternatively, if you’d like them to keep expiring but want to adjust their availability you can use the following config option:
#Number of seconds
config.fog_authenticated_url_expiration = 60000
There’s a bit of info in the following StackOverflow post: http://stackoverflow.com/a/13757841/522859
I’ve been mucking around with CarrierWave today and ran into a bit of an issue. When creating a thumbnail from an animated gif the thumbnail was also animated. Unfortunately this led to some of my image-heavy pages hanging for a bit.
This StackOverflow post offers the following solution:
#Add this method in your uploader
manipulate! do |img, index|
index == 0 ? img : nil
#Adjust your thumbnail process so that it now includes a call to the new function
version :thumb do
process :resize_to_limit => [75, 75]
process :convert => 'jpg'
I was having a bit of trouble with CarrierWave on Amazon S3 today. When attempting to upload files that were larger than ~150kb I received one of the following errors (depending on config):
getaddrinfo: Name or service not known carrierwave
Excon::Errors::SocketError in PhotosController#create
Broken pipe (Errno::EPIPE)
Despite the vague error, the solution was fairly simple. The region configured in my initialiser was different to the one my bucket was created in.
In order to find out which region you need, logon to your AWS console and browse to an uploaded image. Check the endpoint URL (properties > static website hosting) and simply copy the region. For examples:
A couple of final tips if this doesn’t work for you:
You need the region codes, not the name. For instance, “Oregon” won’t work
Don’t forget to restart your app after making changes to the initialiser
Just a quick post on how to retrieve a remote JSON source so I don’t forget.
#Retrieve source (controller/model)
@results = JSON.parse(open("http://www.myjsonsource.com/jsonfeed_num1").read)
<% @results.each do |result| %>
<%= result['value'] %>
<% end %>
That’s all there is to it, let me know if you have any problems!
Just a quick post on how to include a blank row or prompt value when using a select_tag in rails:
<select_tag "Animals", animals_as_options, :prompt => "Please select an animal" />
<select_tag "Animals", animals_as_options, :include_blank => true />
Let me know if you have any issues.