我现在正在做一些培训(所以新手),我正在尝试在 Ruby/psql 项目中运行 console.rb 文件。该项目有客户、电影和门票。
一旦我可以让 console.rb 文件运行,对象就可以对数据执行 CRUD 命令。
目前我有三个 .rb 文件的空数据库表。
RUBY VERSION:
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
PSQL VERSION:
psql (PostgreSQL) 11.5
项目的文件结构如下:
specs
- film_spec.rb (empty)
- ticket_spec.rb (empty)
- customer_spec.rb (empty)
models
- film.rb
- ticket.rb
- customer.rb
db
- cinema_homework.sql
- sql_runner.rb
- customer_spec.rb (empty)
console.rb
控制台文件是:
require('pry')
require_relative('models/customers')
require_relative('models/films')
require_relative('models/tickets')
Tickets.delete_all()
Customers.delete_all()
Films.delete_all()
customer1 = Customers.new({'name' => 'Geddy', 'funds' => 100})
customers1.save()
customer2 etc
customers3 ett
film1 = Films.new({'title' => 'A Show of Hands', 'price' => 20})
film1.save()
film2 etc ...
film3 etc ...
ticket1 = Tickets.new({'customers_id' => customers1.id, 'films_id' => film1.id})
ticket1.save()
ticket2 etc ...
ticket3 etc ...
binding.pry
nil
我收到此错误,但我无法弄清楚发生了什么。非常感谢任何帮助。
Traceback (most recent call last):
3: from console.rb:2:in `<main>'
2: from console.rb:2:in `require_relative'
1: from /Users/johnhannah/codeclan/week_3/day_5/cinema_homework/models/customers.rb:1:in `<top (required)>'
/Users/johnhannah/codeclan/week_3/day_5/cinema_homework/models/customers.rb:1:in `require_relative': cannot load such file -- /Users/johnhannah/codeclan/week_3/day_5/cinema_homework/db/sql_runner (LoadError)
客户.rb
require_relative('../db/sql_runner.rb')
class Customers
attr_reader :id
attr_accessor :name, :funds
def initialize(options)
@id = options['id'].to_i if options['id']
@name = options['name']
@funds = options['funds'].to_i
end
def save()
sql = "INSERT INTO customers (name, funds)
VALUES ($1, $2)
RETURNING id"
values = [@name, @funds]
customers = SqlRunner.run(sql, values).first
@id = customers['id'].to_i
end
end
最佳答案
我建议你加载可执行文件(console.rb
)中的所有文件。
正如您所做的那样,当您运行 console.rb
时,所有文件中的所有类都将可用。
所以在 console.rb
的顶部写一些类似的东西
require 'pry'
require_relative 'db/sql_runner'
require_relative 'models/film'
require_relative 'models/ticket'
require_relative 'models/customer'
(这些行的顺序可以根据加载类的顺序来改变)
同时检查你的类(class)的单词形式。通常类名是单数,而不是复数。并检查所有文件名。通常文件名是 ClassName 的 snake_case
关于ruby - '需要': cannot load such file -- pry-byebug (LoadError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010491/