У меня была точно такая же проблема. Пожалуйста, дважды проверьте правильность настройки параметров конфигурации (имя облака, ключ API, секрет API). Их можно найти, зайдя в консоль управления вашей облачной учетной записи. (Панель управления > Сведения об учетной записи).
Согласно их документации: (http://cloudinary.com/documentation/rails_additional_topics#configuration_options)
Параметры конфигурации можно задать глобально с помощью файла конфигурации cloudinary.yml, расположенного в каталоге config вашего проекта Rails. и т.д...
Вот пример файла cloudinary.yml:
production:
cloud_name: "sample"
api_key: "874837483274837"
api_secret: "a676b67565c6767a6767d6767f676fe1"
и т.д...
... Другой вариант конфигурации - использовать файл инициализатора Rails. Вы можете поместить файл с именем cloudinary.rb в папку /config/initializers вашего проекта Rails. Вот пример кода инициализатора:
Cloudinary.config do |config|
config.cloud_name = 'sample'
config.api_key = '874837483274837'
config.api_secret = 'a676b67565c6767a6767d6767f676fe1'
config.cdn_subdomain = true
end
Последний параметр конфигурации позволяет динамически настраивать библиотеку Cloudinary, определяя переменную среды CLOUDINARY_URL. URL-адрес конфигурации доступен в панели управления Консоли управления вашей учетной записи. При использовании Cloudinary через надстройку PaaS (например, Heroku) эта переменная среды автоматически определяется в вашей среде развертывания. Вот примерное значение:
CLOUDINARY_URL=cloudinary://874837483274837:a676b67565c6767a6767d6767f676fe1@sample
Как я на самом деле решил проблему
Я решил проблему, приняв (и немного изменив) первый вариант, который заключается в создании файла cloudinary.yml
в каталоге config
и написании следующего кода:
(config/cloudinary.yml)
development:
cloud_name: <%= ENV["CLOUD_NAME"] %>
api_key: <%= ENV["API_KEY"] %>
api_secret: <%= ENV["API_SECRET"] %>
test:
cloud_name: <%= ENV["CLOUD_NAME"] %>
api_key: <%= ENV["API_KEY"] %>
api_secret: <%= ENV["API_SECRET"] %>
production:
cloud_name: <%= ENV["CLOUD_NAME"] %>
api_key: <%= ENV["API_KEY"] %>
api_secret: <%= ENV["API_SECRET"] %>
Обратите внимание, что параметры конфигурации (имя облака, ключ API, секрет API) задаются как переменные среды (CLOUD_NAME
, API_KEY
, API_SECRET
), чтобы предотвратить их раскрытие при общедоступном коде. (Вы не хотите жестко кодировать конфиденциальную информацию)
Вы можете установить переменные среды в bash, отредактировав файл .bash_profile
, который находится (и скрыт) в домашнем каталоге:
(.bash_profile)
.....
export CLOUD_NAME="your cloud name"
export API_KEY="your api key"
export API_SECRET="your api secret"
.....
Вы можете проверить, правильно ли установлены эти переменные окружения, набрав, например, echo $CLOUD_NAME
в своем терминале (возможно, вам придется выйти из терминала и перезапустить его). В случае успеха вывод будет выглядеть примерно так:
echo $CLOUD_NAME
> your cloud name
Наконец, если вы планируете развернуть свое приложение на героку, вы также можете добавить cloudinary в качестве надстройки, которая является бесплатной для стартового варианта, введя следующую команду в терминале:
heroku addons:create cloudinary:starter
Соединение всего этого вместе может решить вашу проблему.
И последнее, но не менее важное: я нашел следующий пост в блоге весьма полезным:
http://www.uberobert.com/rails_cloudinary_carrierwave/
В нем объясняется, как вы можете использовать Cloudinary и CarrierWave для загрузки и управления изображениями в вашем приложении.
Надеюсь, поможет!
person
Taiga
schedule
26.04.2016