ruby-on-railsgoogle-cloud-storagecarrierwavefog-google

Fog-google doesn't find credentials


I have a Rails 5 application with Carrierwave. I would like to use fog-google gem but I cannot set it up because fog cannot retrieve the credentials.

I created a .fog file in my application root populated this way:

default:
    google_project: XXXX-website-cdn
    google_client_email: XXXX@XXXX-website-cdn.iam.gserviceaccount.com
    google_json_key_location: google-storage-cdn.json

I then tried to run pry as mentioned in the guidelines, but it doesn't get the credentials.

[3] pry(main)> connection = Fog::Compute::Google.new
ArgumentError: Missing required arguments: google_project
from /Users/ab/.rvm/gems/ruby-2.3.1/gems/fog-core-1.43.0/lib/fog/core/service.rb:244:in `validate_options' 

Infact:

[4] pry(main)> Fog.credentials
=> {}

Where do I tell fog to get credentials from the .fog file?

I don't know if it might be useful to know that I'm using Figaro gem to manage my secrets.


Solution

  • QUICK SOLUTION

    Put the .fog file in the root of the server (or your computer), not the one of the app.

    This is pretty bad, but it's the first I found while quickly looking to solve the problem.

    RIGHT SOLUTION

    If you use google_json_key_location: google-storage-cdn.json Rails will look into / folder of the current server (your computer if you are working locally). In order to look into the application folder you need to use a Rails helper.

    Rails.root.join( 'google-storage-cdn.json' )
    # return /path/to/your/app/google-storage-cdn.json