@@ -4,7 +4,12 @@ require 'sequel'
44require 'fileutils'
55
66environment = ENV [ 'ENVIRONMENT' ] || 'development'
7- DB_PATH = "./src/database/database_#{ environment } .sqlite3"
7+ DB_DIR = File . expand_path ( './src/database' )
8+ DB_PATH = File . join ( DB_DIR , "database_#{ environment } .sqlite3" )
9+
10+ FileUtils . mkdir_p ( DB_DIR )
11+ FileUtils . chmod ( 0755 , DB_DIR ) unless File . stat ( DB_DIR ) . mode . to_s ( 8 ) [ -3 ..-1 ] == '755'
12+
813DB = Sequel . sqlite ( DB_PATH )
914
1015namespace :db do
@@ -14,6 +19,7 @@ namespace :db do
1419 puts "Database already exists at #{ DB_PATH } "
1520 else
1621 FileUtils . touch ( DB_PATH )
22+ FileUtils . chmod ( 0644 , DB_PATH )
1723 puts "Database created at #{ DB_PATH } "
1824 end
1925 end
@@ -32,8 +38,8 @@ namespace :db do
3238 task :migrate do
3339 Sequel . extension :migration
3440 Sequel ::Migrator . run ( DB , './src/database/migrations' )
35- puts " Migrations ran successfully."
36- Rake ::Task [ " db:generate_schema" ] . invoke
41+ puts ' Migrations ran successfully.'
42+ Rake ::Task [ ' db:generate_schema' ] . invoke
3743 end
3844
3945 desc 'Create a new migration with a version number'
@@ -68,7 +74,7 @@ namespace :db do
6874 task :rollback do
6975 Sequel . extension :migration
7076 Sequel ::Migrator . run ( DB , './src/database/migrations' , target : DB . tables . size - 1 )
71- puts " Last migration rolled back."
77+ puts ' Last migration rolled back.'
7278 Rake ::Task [ "db:generate_schema" ] . invoke
7379 end
7480
@@ -83,8 +89,8 @@ namespace :db do
8389 column_type = column_details [ :db_type ]
8490 file . puts " #{ column_name } #{ column_type } ,"
8591 end
86- file . puts ");"
87- file . puts ""
92+ file . puts ');'
93+ file . puts ''
8894 end
8995 end
9096 puts "Schema generated at #{ schema_path } "
@@ -100,4 +106,19 @@ namespace :db do
100106 puts 'No seed file found.'
101107 end
102108 end
109+
110+ desc 'Ensure proper database permissions'
111+ task :ensure_permissions do
112+ unless File . writable? ( DB_DIR )
113+ puts "Setting correct permissions for #{ DB_DIR } "
114+ FileUtils . chmod ( 0755 , DB_DIR )
115+ end
116+
117+ if File . exist? ( DB_PATH ) && !File . writable? ( DB_PATH )
118+ puts "Setting correct permissions for #{ DB_PATH } "
119+ FileUtils . chmod ( 0644 , DB_PATH )
120+ end
121+ end
103122end
123+
124+ Rake ::Task [ 'db:ensure_permissions' ] . invoke
0 commit comments