【问题标题】:Rails 'rake db:seed' not workingRails 'rake db:seed' 不工作
【发布时间】:2015-10-12 19:05:48
【问题描述】:

在尝试完成“rake db:reset”命令时,我收到此错误

rake aborted!
ArgumentError: missing required :bucket option

我已经检查了这里有关此问题的其他几篇帖子,但似乎找不到任何有效的方法。到目前为止,这都是本地托管,所以我认为我不需要对 Heroku 做任何事情。

在错误指向的seeds.rb文件中,我什至没有包含单词bucket,而在我的development.rb文件中,我的回形针默认如下:

config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
  :bucket => ENV['XXX_DEV_S3_BUCKET'],
  :url => ENV['XXX_DEV_S3_URL'],
  :access_key_id => ENV['S3_ACCESS_KEY_ID'],
  :secret_access_key => ENV['S3_SECRET_ACCESS_KEY'],
}
}

我尝试将存储桶线从 s3 凭据中移出,但我得到了同样的错误。任何帮助表示赞赏。

编辑:这是我的种子文件中错误点的区域,整个文件很大

family = Family.create!({name: "family1"})

random = male_names.shuffle.pop.split
dad_first_name = random[0]
mom_first_name = female_names.shuffle.pop.split[0]
last_name = random[1]

parents = family.users.create!([
  {
      first_name: dad_first_name,
      last_name: last_name,
      username: 'parent1',
      email: dad_first_name + "@" + last_name + ".com",
      password: '123456',
      password_confirmation: '123456',
      role: "parent",
      avatar: File.open("#{Rails.root}/db/images/parent1.jpg")
  },
  {
    first_name: mom_first_name,
    last_name: last_name,
    username: 'parent2',
    email: mom_first_name + "@" + last_name + ".com",
    password: '123456',
    password_confirmation: '123456',
    role: "parent",
    avatar: File.open("#{Rails.root}/db/images/parent2.jpg")
  }
])

错误专门指向以“父母”开头的行

【问题讨论】:

  • 粘贴你的种子文件

标签: ruby-on-rails ruby


【解决方案1】:

你可以试试这个:

Paperclip::Attachment.default_options.merge!({
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['XXX_DEV_S3_BUCKET'],
    :access_key_id => ENV['S3_ACCESS_KEY_ID'],
    :secret_access_key => ENV['S3_SECRET_ACCESS_KEY'],
  },
 :url => ENV['XXX_DEV_S3_URL'],
 :path => "/:class/:attachment/:id_partition/:style/:filename"
})

【讨论】:

  • 抱歉,我没有注意到第一行的变化。这给了我一个相同位置的新错误“TypeError:没有将 nil 隐式转换为字符串”
【解决方案2】:

S3 存储桶配置为使用ENV['XXX_DEV_S3_BUCKET']

我猜你没有设置那个环境变量。

检查项目中是否有名为 .env.env.developmentapplication.yml 的文件。

dotenvFigaro 使用这些文件来管理环境变量。

如果这是 Heroku 应用程序,您可能还需要检查 heroku config 以查看那里是否设置了值。

否则,您可能需要使用上述工具之一将它们传递给自己,或者像这样直接将它们传递到命令行:

XXX_DEV_S3_BUCKET=xxx-production S3_ACCESS_KEY_ID=1823123412 S3_SECRET_ACCESS_KEY=blahblahblah bin/rake db:seed

【讨论】:

  • 嗯,我在哪里可以找到那个文件?我一直在环顾四周,但似乎找不到类似的东西
  • @LukeMeyer DotEnv 通常位于项目根目录中(因为它以点开头,您可能需要ls -al 才能看到它)。 Figaro 使用 config/application.yml
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2016-09-09
  • 2017-10-18
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多