@@ -269,7 +269,7 @@ def encoding
269269 end
270270
271271 def encoding = ( mode )
272- set_enum_pragma "encoding" , mode , ENCODINGS
272+ set_string_pragma "encoding" , mode , ENCODINGS
273273 end
274274
275275 def foreign_key_check ( *table , &block ) # :yields: row
@@ -337,7 +337,7 @@ def journal_mode
337337 end
338338
339339 def journal_mode = ( mode )
340- set_enum_pragma "journal_mode" , mode , JOURNAL_MODES
340+ set_string_pragma "journal_mode" , mode , JOURNAL_MODES
341341 end
342342
343343 def journal_size_limit
@@ -361,7 +361,7 @@ def locking_mode
361361 end
362362
363363 def locking_mode = ( mode )
364- set_enum_pragma "locking_mode" , mode , LOCKING_MODES
364+ set_string_pragma "locking_mode" , mode , LOCKING_MODES
365365 end
366366
367367 def max_page_count
@@ -567,7 +567,7 @@ def wal_checkpoint
567567 end
568568
569569 def wal_checkpoint = ( mode )
570- set_enum_pragma "wal_checkpoint" , mode , WAL_CHECKPOINTS
570+ set_string_pragma "wal_checkpoint" , mode , WAL_CHECKPOINTS
571571 end
572572
573573 def writable_schema = ( mode )
@@ -610,6 +610,13 @@ def table_info table
610610
611611 private
612612
613+ def set_string_pragma ( pragma_name , value , valid_values )
614+ valid_values . fetch ( value . to_s . downcase ) {
615+ raise SQLite3 ::Exception , "unrecognized #{ pragma_name } #{ value . inspect } "
616+ }
617+ set_enum_pragma ( pragma_name , value , valid_values )
618+ end
619+
613620 # Compares two version strings
614621 def version_compare ( v1 , v2 )
615622 v1 = v1 . split ( "." ) . map { |i | i . to_i }
0 commit comments