如何在Rails控制台中通过脚本测试我的SQLite数据库?

时间:2013-03-28 00:05:07

标签: ruby-on-rails ruby sqlite scripting

在Rails控制台上,我的类用户看起来像这样:

irb(main):005:0> User
=> User(id: integer, name: string, created_at: datetime, updated_at: datetime)

我可以使用

生成User实例
irb(main):006:0> User.create(:name => "user0")

我想要做的是通过创建X个用户实例来测试我的数据库。我想过编写一个Ruby脚本,我循环遍历一个循环 - 就像(不是真正的Ruby代码!)

for i in 1..X do
  User.create(:name => "name"+i)
end

但我不知道如何在Ruby中访问我的类以及如何“告诉”控制台生成实际对象。

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

这里有几个选项。最好的选择是学习如何使用Rails的默认Test::UnitRSpec或其他替代方法编写单元测试。这是正确的方法,事实上Rails默认都是通过测试连接起来的。你有一个test目录,rake test和其他测试任务。如果您使用Rails生成器(rails g model Foo),它甚至会为您创建测试文件。你只需要填写它们。

如果您还没准备好学习测试框架,那么您可以将上面的代码放到一个文件中(让我们称之为test_user.rb)并通过rails runner运行它。这将在执行代码之前引导Rails环境,并且您将可以访问模型:

rails runner test_user.rb

答案 1 :(得分:0)

您似乎正在尝试为数据库创建一些种子数据。为什么不直接在Rails控制台中运行代码?或者你可以创建一个Rake任务,然后从那里开始播种。

我还建议使用Faker,这会为您提供一些真实的数据:

require 'faker'

for i in 1..X do
    u = User.new
    u.first_name = Faker::Name.first_name
    u.last_name = Faker::Name.last_name
    u.email = Faker::Internet.email
    u.notes = Faker::Lorem.paragraph
    u.cell_phone = Faker::PhoneNumber.cell_phone
    u.home_phone = Faker::PhoneNumber.phone_number
    u.save
end