Итак, я пытаюсь создать быструю консольную программу для своих нужд разработки, похожую на rails console
(я использую Sinatra + DataMapper + pry).
Я запускаю его и запускаю cat = Category.new(name: 'TestCat', type: :referential)
. Это дает мне следующую ошибку:
Error: Cannot open "/home/art-solopov/Projects/by-language/Ruby/billy-bones/=" for reading.
Что может быть причиной проблемы?
приставка:
#!/usr/bin/env ruby
$LOAD_PATH << 'lib'
require 'pry'
require 'config'
binding.pry
библиотека/config.rb:
# Configuration files and app-wide requires go here
require 'sinatra'
require 'data_mapper'
require 'model/bill'
require 'model/category'
configure :production do
DataMapper::Logger.new('db-log', :debug)
DataMapper.setup(:default,
'postgres://billy-bones:billy@localhost/billy-bones')
DataMapper.finalize
end
configure :development do
DataMapper::Logger.new($stderr, :debug)
DataMapper.setup(:default,
'postgres://billy-bones:billy@localhost/billy-bones-dev')
DataMapper.finalize
DataMapper.auto_upgrade!
end
configure :test do
require 'dm_migrations'
DataMapper::Logger.new($stderr, :debug)
DataMapper.setup(:default,
'postgres://billy-bones:billy@localhost/billy-bones-test')
DataMapper.finalize
DataMapper.auto_migrate!
end
библиотека/модель/категория.rb:
require 'data_mapper'
class Category
include DataMapper::Resource
property :id, Serial
property :name, String
property :type, Enum[:referential, :predefined, :computable]
has n, :bills
# has n, :tariffs TODO uncomment when tariff ready
def create_bill(params)
# A bill factory for current category type
case type
when :referential
ReferentialBill.new params
when :predefined
PredefinedBill.new params
when :computable
ComputableBill.new params
end
end
end
Если я заменю pry на irb в сценарии консоли, все пойдет нормально.
Большое спасибо!
П. С.
Хорошо, вчера я снова попробовал этот скрипт, и он отлично сработал. Я ничего не менял. Я не уверен, следует ли мне удалить вопрос сейчас или нет.
П. P.S.
Или на самом деле нет... Сегодня снова столкнулся с этим. Все еще совершенно не обращая внимания на то, что могло вызвать это.
** РЕШЕНО **
Черт тебя побери!
Итак, вот разница.
Когда я тестировал его во второй раз, я действительно ввел a = Category.new(name: 'TestCat', type: :referential)
, и это сработало. Похоже, pry просто думает, что cat
— это команда Unix, а не допустимое имя переменной.