diff options
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb | 33 |
2 files changed, 36 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 544374586c..5c9912b366 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -29,9 +29,11 @@ module ActiveRecord Dir.mkdir(dirname) unless File.directory?(dirname) end + db_opts = config.symbolize_keys.merge(results_as_hash: true) + db = SQLite3::Database.new( config[:database].to_s, - results_as_hash: true + db_opts ) db.busy_timeout(ConnectionAdapters::SQLite3Adapter.type_cast_config_to_integer(config[:timeout])) if config[:timeout] diff --git a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb index ad155c7492..86cbe530a0 100644 --- a/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +++ b/activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb @@ -504,6 +504,39 @@ module ActiveRecord assert_deprecated { @conn.valid_alter_table_type?(:string) } end + def test_db_is_not_readonly_when_readonly_option_is_false + @conn = Base.sqlite3_connection database: ":memory:", + adapter: "sqlite3", + readonly: false + + assert_not_predicate(@conn.raw_connection, :readonly?) + end + + def test_db_is_not_readonly_when_readonly_option_is_unspecified + @conn = Base.sqlite3_connection database: ":memory:", + adapter: "sqlite3" + + assert_not_predicate(@conn.raw_connection, :readonly?) + end + + def test_db_is_readonly_when_readonly_option_is_true + @conn = Base.sqlite3_connection database: ":memory:", + adapter: "sqlite3", + readonly: true + + assert_predicate(@conn.raw_connection, :readonly?) + end + + def test_writes_are_not_permitted_to_readonly_databases + @conn = Base.sqlite3_connection database: ":memory:", + adapter: "sqlite3", + readonly: true + + assert_raises(ActiveRecord::StatementInvalid, /SQLite3::ReadOnlyException/) do + @conn.execute("CREATE TABLE test(id integer)") + end + end + private def assert_logged(logs) |