Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails站点地图生成器上载到S3_Ruby On Rails 4_Amazon Web Services_Amazon S3_Sitemap_Aws Sdk - Fatal编程技术网

Ruby on rails 4 Rails站点地图生成器上载到S3

Ruby on rails 4 Rails站点地图生成器上载到S3,ruby-on-rails-4,amazon-web-services,amazon-s3,sitemap,aws-sdk,Ruby On Rails 4,Amazon Web Services,Amazon S3,Sitemap,Aws Sdk,尝试生成一个站点地图并将其上传到Amazon S3中的当前存储桶中,但是,我得到了 Excon::Errors::Forbidden: Expected(200) <=> Actual(403 Forbidden) 我的s3.rb文件中有这个 SitemapGenerator::Sitemap.default_host = "http://www.example.com" SitemapGenerator::Sitemap.public_path = 'tmp/sitemaps/'

尝试生成一个站点地图并将其上传到Amazon S3中的当前存储桶中,但是,我得到了

Excon::Errors::Forbidden: Expected(200) <=> Actual(403 Forbidden)
我的
s3.rb文件中有这个

SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.public_path = 'tmp/sitemaps/'
SitemapGenerator::Sitemap.sitemaps_host = "http://s3.amazonaws.com/#{ENV['S3_BUCKET_NAME']}/"
SitemapGenerator::Sitemap.create do
  add about_path
  add landing_index_path
  add new_user_session_path, priority: 0.0

  Trip.find_each do |trip|
    add trip_path(trip.slug), lastmod: trip.updated_at
  end
end
CarrierWave.configure do |config|
  config.storage = :fog
  config.fog_credentials = {
      :provider               => 'AWS',
      :aws_access_key_id      => Rails::AWS.config['access_key_id'],
      :aws_secret_access_key  => Rails::AWS.config['secret_access_key'],
      :region                 => 'us-east-1'
  }
  config.fog_directory  = Rails::AWS.config['bucket_name']
end
有人能知道这有什么问题吗?

我的工作配置(我在heroku中使用)与您的有点不同,以下是我的:

SitemapGenerator::Sitemap.default_host = 'http://example.com'
SitemapGenerator::Sitemap.public_path = 'tmp/'
SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(fog_provider: 'AWS', fog_directory: 'sitemap-bucket')
SitemapGenerator::Sitemap.sitemaps_host = "http://#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com/"
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'
我不使用S3.rb,而是设置以下环境变量:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
FOG_DIRECTORY
FOG_REGION
我在这里使用了教程:


我希望有帮助

我遇到了类似的错误:

In '/app/tmp/':
rake aborted!
ArgumentError:  is not a recognized provider
根据上面雷纳托隆的回答,这是对我有效的配置。关键是要确保所有变量,例如“fog_region:”都与有效值匹配。不要盲目复制并粘贴配置凭据

SitemapGenerator::Sitemap.default_host = "https://yourwebsitename.com"

SitemapGenerator::Sitemap.public_path = 'tmp/'
SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(
  fog_provider: 'AWS',
  aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
  fog_directory: ENV['S3_BUCKET'],
  fog_region: ENV['AWS_REGION'])

SitemapGenerator::Sitemap.sitemaps_host = "http://{ENV['S3_BUCKET']}.s3.amazonaws.com/"
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'

我使用的是carrierwave,与我使用的类似。您是否尝试过将您的站点地图\主机/站点地图\路径替换为我粘贴的路径<代码>站点地图生成器::Sitemap.sitemaps\u主机=”http://s3.amazonaws.com/#{ENV['S3_BUCKET_NAME']}/“
对于类似的内容:
SitemapGenerator::Sitemap.sitemaps\u host=“http://{ENV['FOG_DIRECTORY']}.S3.amazonaws.com/”SitemapGenerator::Sitemap.sitemaps\u path='sitemaps/”
实际上,当我尝试更改路径时,我得到这个:
ping与URL'http://.s3.amazonaws.com/sitemap.xml.gz“:
为Google:#(URL)Ping失败http://www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2F.s3.amazonaws.com%2Fsitemap.xml.gz)
可能代替
ENV['FOG\u DIRECTORY']
你应该使用类似于
config.fog\u directory=Rails::AWS.config['bucket\u name']
的东西。约翰,干杯!为了让它发挥作用,我一直在紧张地工作。在适配器中设置所有AWS内容第一次起作用!救命恩人!