Я думаю, что это на самом деле серия предупреждений для отладки.
ruby -w
устанавливает флаг в SQLite3, который генерирует более подробный вывод.
#!/usr/bin/ruby -w
require 'sqlite3'
dbh = SQLite3::Database.new('/tmp/my.db')
dbh.translator
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:51: warning: `*' interpreted as argument prefix
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/safe.rb:59: warning: constant ::Fixnum is deprecated
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:54: warning: method redefined; discarding old exec
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:60: warning: method redefined; discarding old exit!
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:65: warning: method redefined; discarding old fork
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:68: warning: method redefined; discarding old fork
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/the_matrix.rb:69: warning: method redefined; discarding old fork
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/seeing_is_believing-3.6.1/lib/seeing_is_believing/customize_pp.rb:2: warning: method redefined; discarding old pretty_print
# !> /Users/greg/.rbenv/versions/2.7.0/lib/ruby/2.7.0/pp.rb:396: warning: previous definition of pretty_print was here
....
Удалите -w
и попробуйте:
#!/usr/bin/ruby
require 'sqlite3'
dbh = SQLite3::Database.new('/tmp/my.db')
dbh.translator
Все предупреждения пропали .
Что касается перевода с true
/ false
на 1
/ 0
соответственно, то простой ха sh упрощает:
TRANSLATOR = {
true => 1,
false => 0
}
TRANSLATOR[true] # => 1
TRANSLATOR[false] # => 0
I ' хотя я рекомендую не использовать гем SQLite3 напрямую. Слой ORM позволяет очень легко писать код DBM-agnosti c, что позволяет легко переходить с SQLite на PostgreSQL, MySQL, Oracle, et c., Без необходимости переписывать что-либо, кроме ваши данные для типа DBM и использование файла YAML для хранения информации о DSN, чтение и последующее заполнение переменных для соединения делает это еще проще. Настройте файл YAML, перезапустите код, и все готово.
Лично мне нравится и рекомендую Сиквел , но если у вас есть опыт работы с Rails, тогда Active Record также является разумным выбором.