0

我使用他们的 cleardb mysql 插件在 heroku 上托管了一个简单的 rails 应用程序。我在本地开发mysql。我在 heroku 上的生产数据库上播种数据时遇到问题。

我的种子数据在 db/seeds.rb 中看起来像这样。该应用程序正在使用伪造品和制造宝石。我有一个用户模型和一个人模型。

Fabricator(:user) do 
  first_name { Faker::Name.first_name }
  last_name { Faker::Name.last_name }
  birthday { Faker::Date.backward(14000) }
  phone_number { Faker::PhoneNumber.phone_number }
  street { Faker::Address.street_address }
  city { Faker::Address.city }
  state { Faker::Address.state_abbr }
  zip_code { Faker::Address.zip }
  education { "Bachelor" }
  image { File.open("app/assets/images/helloworld.jpg")}
end 

Fabricator(:person) do 
  full_name { Faker::Name.name }
  email { Faker::Internet.email }
  image { File.open("app/assets/images/puppy.jpg")}
  friend_test { 0 }
  user
end 

#40.times { Fabricate(:user)} #comment this out because running the below command will generate user already
40.times { Fabricate(:person)}

Person.create(full_name: "Ben Franklin", email: "ben@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 1)
Person.create(full_name: "George Washington", email: "george@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 1)
Person.create(full_name: "John Adam", email: "john@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 1)


Person.create(full_name: "Barack Obama", email: "barack@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 2)
Person.create(full_name: "John Kennedy", email: "john@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 2)
Person.create(full_name: "Andrew Jackson", email: "andrew@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 2)


Person.create(full_name: "Jimmy Carter", email: "jimmy@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 3)
Person.create(full_name: "Gerald Ford", email: "gerald@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 3)
Person.create(full_name: "Richard Nixon", email: "richard@gmail.com", friend_test: 0, image: File.open("app/assets/images/puppy.jpg"), user_id: 3)

最初我认为它没有正确播种,因为我没有正确清除数据库(因为 heroku 不能很好地与 mysql 配合使用)。我完成了所有这些步骤,我想我缩小到了播种操作的问题。

heroku run rake db:drop
heroku run rake db:create
heroku run rake db:migrate 
heroku run rake db:setup
heroku run rake db:seed #problem

当我跑步时

heroku run rails console

并做一个User.all

种子数据创建 User_id =1 然后跳转到 User_id = 11 然后 User_id = 21。这与 Person 模型相同。这真的很奇怪,因为当我在本地运行这些命令时,我只会获得从 1 到 40 的用户 ID,并且与从 1 到 40 的 person_id 相同。我的本地数据库很好。我在视图中有逻辑,它依赖于记录以 1 比 1 而不是随机的。

它也是一个rails 4.1.8应用程序。

更新于 2014 年 12 月 8 日

是的,我在本地和生产中都使用 mysql,这是我的 database.yml 文件

development:
  adapter: mysql2
  encoding: utf8
  database: mini_facebook_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

staging:
  adapter: mysql2
  encoding: utf8
  database: mini_facebook_staging
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

test:
  adapter: mysql2
  encoding: utf8
  database: mini_facebook_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

并且是

gem 'mysql2', '~> 0.3.17'

我这里没有生产设置。我正在使用heroku config,并且从heroku 文档中,无论如何都会生成一个database.yml。

4

0 回答 0