Rails 5.2 как починить отсутствующий хост для ссылки на!Пожалуйста, укажите параметр: host - PullRequest
0 голосов
/ 29 мая 2018

Локально, это работает.В Heroku production я получаю это сообщение об ошибке при использовании ActiveModelSerializers.Я использую active_model_serializers (~> 0.10.2)

ArgumentError (отсутствует хост для ссылки! Пожалуйста, укажите параметр: host, установите default_url_options [: host] или установите: only_path в true):

Я прочитал

Я пытался определить его в ./app/config/environments/production.rb

Rails.application.configure do

  config.action_mailer.default_url_options = { host: 'lit-brushlands- 
 65490.herokuapp.com' }

end 

Я пытался определить егов ./app/serializers/application_serializer.rb, как я вижу, что Дрифтинг Руби делает это в 2:30 в видео .

# ./app/serializers/application_serializer.rb
class ApplicationSerializer < ActiveModel::Serializer

  include Rails.application.routes.url_helpers
  default_url_options[:host] = 'lit-brushlands-65490.herokuapp.com'

end

Я также попытался определить его в ./config/application.rb, например, как предложил Remear:сделайте это в качестве последнего комментария к этому запросу ActiveModelSerializer.

Вот мой след стека.Я пытаюсь получить фотографию профиля пользователя в декораторе.

enter image description here

2018-05-29T12:40:31.274554+00:00 app[web.1]: I, [2018-05-29T12:40:31.274447 #4]  INFO -- : [b70376bf-4950-4376-bf91-f21a3533e9d3] [active_model_serializers] Rendered ActiveModel::Serializer::CollectionSerializer with ActiveModelSerializers::Adapter::Attributes (1766.98ms)
2018-05-29T12:40:31.274941+00:00 app[web.1]: I, [2018-05-29T12:40:31.274854 #4]  INFO -- : [b70376bf-4950-4376-bf91-f21a3533e9d3] Completed 500 Internal Server Error in 1877ms (ActiveRecord: 126.0ms)
2018-05-29T12:40:31.276753+00:00 app[web.1]: F, [2018-05-29T12:40:31.276654 #4] FATAL -- : [b70376bf-4950-4376-bf91-f21a3533e9d3]
2018-05-29T12:40:31.276834+00:00 app[web.1]: F, [2018-05-29T12:40:31.276754 #4] FATAL -- : [b70376bf-4950-4376-bf91-f21a3533e9d3] ArgumentError (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):
2018-05-29T12:40:31.276923+00:00 app[web.1]: F, [2018-05-29T12:40:31.276835 #4] FATAL -- : [b70376bf-4950-4376-bf91-f21a3533e9d3]
2018-05-29T12:40:31.277014+00:00 app[web.1]: F, [2018-05-29T12:40:31.276930 #4] FATAL -- : [b70376bf-4950-4376-bf91-f21a3533e9d3] app/decorators/user_decorator.rb:13:in `most_recent_profile_photo'
2018-05-29T12:40:31.277017+00:00 app[web.1]: [b70376bf-4950-4376-bf91-f21a3533e9d3] app/serializers/user_serializer.rb:11:in `profile_photo_url'
2018-05-29T12:40:31.277019+00:00 app[web.1]: [b70376bf-4950-4376-bf91-f21a3533e9d3] app/controllers/v1/posts_controller.rb:10:in `index

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018
# production.rb

Rails.application.routes.default_url_options[:host] ='lit-brushlands-65490.herokuapp.com'

0 голосов
/ 29 мая 2018

Я предполагаю, что вы используете carrierwave с AWS.Возможно, ошибка не исходит непосредственно от Serializer, проверьте свои настройки на carrierwave

Возможно, вы используете другой хост в разработке, и это нужно изменить

CarrierWave.configure do |config|
  config.fog_provider = 'fog/aws'                        # required
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     'xxx',                        # required
    aws_secret_access_key: 'yyy',                        # required
    region:                'eu-west-1',                  # optional, defaults to 'us-east-1'
    host:                  's3.example.com',             # optional, defaults to nil
    endpoint:              'https://s3.example.com:8080' # optional, defaults to nil
  }
  config.fog_directory  = 'name_of_directory'                                   # required
  config.fog_public     = false                                                 # optional, defaults to true
  config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } # optional, defaults to {}
end
...