Class: Hoboken::AddOns::Sequel
- Inherits:
-
Group
- Object
- Thor::Group
- Group
- Hoboken::AddOns::Sequel
show all
- Defined in:
- lib/hoboken/add_ons/sequel.rb
Overview
Database access via Sequel gem.
Instance Method Summary
collapse
Methods inherited from Group
#classic?, #modular?, #rspec?, #rubocop?, #sequel?, source_root
#gem, #indent
Instance Method Details
#add_database_spec_helper ⇒ Object
rubocop:enable Metrics/MethodLength
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/hoboken/add_ons/sequel.rb', line 67
def add_database_spec_helper
return unless rspec?
insert_into_file('spec/spec_helper.rb', before: /ENV\['RACK_ENV'\] = 'test'/) do
"ENV['DATABASE_URL'] = 'sqlite://db/test.db'\n"
end
snippet = <<~CODE
config.around do |example|
DB.transaction(rollback: :always) { example.run }
end
CODE
location = /RSpec\.configure do \|config\|\n/
insert_into_file('spec/spec_helper.rb', after: location) do
"#{indent(snippet, 2)}\n"
end
end
|
#add_database_test_helper_class ⇒ Object
rubocop:disable Metrics/MethodLength
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/hoboken/add_ons/sequel.rb', line 42
def add_database_test_helper_class
return if rspec?
insert_into_file('test/test_helper.rb', before: /ENV\['RACK_ENV'\] = 'test'/) do
"ENV['DATABASE_URL'] = 'sqlite://db/test.db'\n"
end
insert_into_file('test/test_helper.rb', after: %r{require 'test/unit'}) do
"\nrequire 'sequel'"
end
snippet = <<~CODE
def run(*args, &block)
result = nil
DB.transaction(rollback: :always) { result = super }
result
end
CODE
insert_into_file('test/test_helper.rb', after: /include RackHelpers\n/) do
"\n#{indent(snippet, 6)}"
end
end
|
#add_gems ⇒ Object
8
9
10
11
12
|
# File 'lib/hoboken/add_ons/sequel.rb', line 8
def add_gems
gem 'sequel', version: '5.43'
gem 'sqlite3', version: '1.4', group: %i[development test]
gem 'rubocop-sequel', version: '0.2', group: %i[development test] if rubocop?
end
|
#copy_rake_task ⇒ Object
20
21
22
|
# File 'lib/hoboken/add_ons/sequel.rb', line 20
def copy_rake_task
copy_file('hoboken/templates/sequel.rake', 'tasks/sequel.rake')
end
|
#reminders ⇒ Object
rubocop:enable Metrics/MethodLength
124
125
126
127
128
129
130
131
132
|
# File 'lib/hoboken/add_ons/sequel.rb', line 124
def reminders
say "\nGemfile updated... don't forget to 'bundle install'"
say <<~TEXT
Notes:
* The sqlite3 gem has been installed for dev and test environments only. You will need to specify a gem to use for production.
* You will need to specify an environment variable 'DATABASE_URL' (either add it to .env or export it)
TEXT
end
|
#require_db_config ⇒ Object
28
29
30
31
32
33
|
# File 'lib/hoboken/add_ons/sequel.rb', line 28
def require_db_config
location = %r{require_relative '\.\./app'}
insert_into_file('config/environment.rb', before: location) do
"require_relative 'db'\n\n"
end
end
|
#setup_db_config ⇒ Object
24
25
26
|
# File 'lib/hoboken/add_ons/sequel.rb', line 24
def setup_db_config
template('hoboken/templates/db.rb.tt', 'config/db.rb')
end
|
#setup_directories ⇒ Object
14
15
16
17
18
|
# File 'lib/hoboken/add_ons/sequel.rb', line 14
def setup_directories
empty_directory('db/migrate')
empty_directory('tasks')
empty_directory('tmp')
end
|
#setup_puma_config ⇒ Object
35
36
37
38
39
|
# File 'lib/hoboken/add_ons/sequel.rb', line 35
def setup_puma_config
insert_into_file('config/puma.rb', after: 'before_fork do') do
"\n DB.disconnect if defined?(DB)"
end
end
|
#update_readme ⇒ Object
rubocop:disable Metrics/MethodLength
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'lib/hoboken/add_ons/sequel.rb', line 95
def update_readme
snippet = <<~CODE
<tr>
<td>DATABASE_URL</td>
<td>Yes</td>
<td>
`sqlite://db/test.db` (for the test environment <em>only</em>)
</td>
<td>
Connection URL to the database. The format varies according
database adapter. Refer to the
<a href="https://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html">
Sequel gem documentation</a> for more information. Some examples:
<dl>
<dt>Sqlite3</dt>
<dd>`sqlite://db/development.db`</dd>
<dt>PostgreSQL</dt>
<dd>`postgresql://localhost/myapp_development?pool=5`</dd>
</dl>
</td>
</tr>
CODE
insert_into_file('README.md', after: /<tbody>\n/) do
indent(snippet, 8)
end
end
|
#update_rubocop_config ⇒ Object
86
87
88
89
90
91
92
|
# File 'lib/hoboken/add_ons/sequel.rb', line 86
def update_rubocop_config
return unless rubocop?
insert_into_file('.rubocop.yml', after: /require:\n/) do
" - rubocop-sequel\n"
end
end
|