hanamismith 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +18 -8
- data/hanamismith.gemspec +1 -1
- data/lib/hanamismith/builders/bundler.rb +17 -3
- data/lib/hanamismith/builders/environments/development.rb +33 -0
- data/lib/hanamismith/builders/environments/test.rb +33 -0
- data/lib/hanamismith/builders/rspec/application_shared_context.rb +34 -0
- data/lib/hanamismith/builders/rspec/database.rb +34 -0
- data/lib/hanamismith/builders/rspec/factory.rb +34 -0
- data/lib/hanamismith/cli/actions/build.rb +5 -1
- data/lib/hanamismith/templates/%project_name%/Procfile.dev.erb +1 -1
- data/lib/hanamismith/templates/%project_name%/env.development.erb +1 -0
- data/lib/hanamismith/templates/%project_name%/env.test.erb +1 -0
- data/lib/hanamismith/templates/%project_name%/spec/hanami_helper.rb.erb +25 -3
- data/lib/hanamismith/templates/%project_name%/spec/support/database.rb.erb +10 -0
- data/lib/hanamismith/templates/%project_name%/spec/support/factory.rb.erb +6 -0
- data/lib/hanamismith/templates/%project_name%/spec/support/shared_contexts/application.rb.erb +3 -0
- data.tar.gz.sig +0 -0
- metadata +12 -4
- metadata.gz.sig +0 -0
- data/lib/hanamismith/builders/environment.rb +0 -31
- data/lib/hanamismith/templates/%project_name%/envrc.erb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95bcf45f1ad28134657402afeab54487757c5269166ee13cbddd23571cf749ca
|
4
|
+
data.tar.gz: ed18cbcf1ea054fb8cc7794590cd89006738f8ea08495e7a26e1ff7c146c3531
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 138d4fddb7fbbdeb608ca6f218b32006c851679197c36a63ceadcbb62954a88c5b05995dc7de2e24e06d80ea60b7c4c278d8db0c581038d478f4a67cb0fcff16
|
7
|
+
data.tar.gz: 15b01e9c02efbe60f6f0aad5137a952040ad8edb9cdfd832f76508cb134dcd4405a9f60a3285c8c57b1619695f5566a6a2ce5ade60356715a98af990c80bb2f2
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -2,16 +2,21 @@
|
|
2
2
|
:toclevels: 5
|
3
3
|
:figure-caption!:
|
4
4
|
|
5
|
+
:capybara_link: link:https://github.com/teamcapybara/capybara[Capybara]
|
5
6
|
:cuprite_link: link:https://cuprite.rubycdp.com[Cuprite]
|
6
7
|
:dry_link: link:https://dry-rb.org[Dry RB]
|
8
|
+
:dotenv_link: link:https://github.com/bkeepers/dotenv[Dotenv]
|
7
9
|
:dotfiles_link: link:https://www.alchemists.io/projects/dotfiles[Dotfiles]
|
8
10
|
:hanami_link: link:https://hanamirb.org[Hanami]
|
9
11
|
:htmx_link: link:https://htmx.org[HTMX]
|
12
|
+
:pg_link: link:https://github.com/ged/ruby-pg[pg]
|
13
|
+
:puma_link: link:https://puma.io[Puma]
|
14
|
+
:rom_link: link:https://rom-rb.org[ROM]
|
10
15
|
:rubysmith_link: link:https://www.alchemists.io/projects/rubysmith[Rubysmith]
|
11
16
|
|
12
17
|
= Hanamismith
|
13
18
|
|
14
|
-
Hanamismith is a Command Line Interface (CLI) for smithing Hanami projects. Perfect for when you need a professional and robust tool for building new project skeletons. To quote from the {dry_link} and {hanami_link}
|
19
|
+
Hanamismith is a Command Line Interface (CLI) for smithing Hanami projects. Perfect for when you need a professional and robust tool for building new project skeletons. To quote from the {dry_link} and {hanami_link} teams:
|
15
20
|
____
|
16
21
|
If you're looking for new ways to build maintainable, secure, faster and testable Ruby applications, you're in for a treat. *Hanami is built for people like you*.
|
17
22
|
|
@@ -24,11 +29,14 @@ toc::[]
|
|
24
29
|
|
25
30
|
== Features
|
26
31
|
|
27
|
-
*
|
28
|
-
*
|
29
|
-
*
|
30
|
-
*
|
31
|
-
*
|
32
|
+
* Built atop {rubysmith_link} and leverages all features.
|
33
|
+
* Uses {dry_link} functional programming.
|
34
|
+
* Uses {hanami_link} for web application development.
|
35
|
+
* Uses {htmx_link} for proper REST (hypermedia) architectures (i.e. HTML over the wire) so you can write less code and avoid bloated JavaScript stacks.
|
36
|
+
* Uses {pg_link} coupled with {rom_link} for database management.
|
37
|
+
* Uses {puma_link} as the default web server and fully configured for local and production environments.
|
38
|
+
* Uses {capybara_link} with {cuprite_link} (driver) for full, headless, feature testing.
|
39
|
+
* Uses {dotenv_link} for managing your environment configurations.
|
32
40
|
|
33
41
|
== Requirements
|
34
42
|
|
@@ -138,7 +146,7 @@ git commit # (repeat until finished with implementation)
|
|
138
146
|
overmind start --port-step 10 --procfile Procfile.dev
|
139
147
|
|
140
148
|
# Run: Without Overmind
|
141
|
-
hanami
|
149
|
+
hanami server
|
142
150
|
|
143
151
|
# Deploy
|
144
152
|
git push
|
@@ -159,7 +167,9 @@ The above is what I use via my {dotfiles_link} project.
|
|
159
167
|
|
160
168
|
=== Demonstration
|
161
169
|
|
162
|
-
If you'd like a fully working demonstration
|
170
|
+
If you'd like a fully working demonstration application -- as built by this gem -- then check out the link:https://github.com/bkuhlmann/hemo[Hemo] project. Here's a quick screencast overview of demonstration application:
|
171
|
+
|
172
|
+
video::https://www.alchemists.io/videos/projects/hemo/demo.mp4[poster=https://www.alchemists.io/images/projects/hemo/demo.png,width=1028,height=854,role=focal_point]
|
163
173
|
|
164
174
|
== Development
|
165
175
|
|
data/hanamismith.gemspec
CHANGED
@@ -16,6 +16,7 @@ module Hanamismith
|
|
16
16
|
alter_groups
|
17
17
|
append_development_group
|
18
18
|
append_test_group
|
19
|
+
insert_development_and_test_group
|
19
20
|
remove_zeitwerk
|
20
21
|
configuration
|
21
22
|
end
|
@@ -49,10 +50,12 @@ module Hanamismith
|
|
49
50
|
|
50
51
|
def alter_groups
|
51
52
|
with_template.insert_after(/group :code_quality/, %( gem "rubocop-sequel", "~> 0.3"\n))
|
52
|
-
.insert_after(/group :development/, %( gem "localhost", "~> 1.1"\n))
|
53
|
-
.insert_after(/group :development/, %( gem "rerun", "~> 0.14"\n))
|
53
|
+
.insert_after(/group :development do/, %( gem "localhost", "~> 1.1"\n))
|
54
|
+
.insert_after(/group :development do/, %( gem "rerun", "~> 0.14"\n))
|
54
55
|
.insert_after(/group :test/, %( gem "capybara", "~> 3.38"\n))
|
55
56
|
.insert_after(/group :test/, %( gem "cuprite", "~> 0.14"\n))
|
57
|
+
.insert_after(/group :test/, %( gem "database_cleaner-sequel", "~> 2.0"\n))
|
58
|
+
.insert_after(/group :test/, %( gem "launchy", "~> 2.5"\n))
|
56
59
|
.insert_after(/group :test/, %( gem "rack-test", "~> 2.0"\n))
|
57
60
|
.insert_after(/group :test/, %( gem "rom-factory", "~> 0.11"\n))
|
58
61
|
.replace(/gem "rspec.+/, %(gem "hanami-rspec", "~> 2.0"))
|
@@ -62,7 +65,6 @@ module Hanamismith
|
|
62
65
|
return if configuration.markdown? || configuration.build_rake || configuration.build_yard
|
63
66
|
|
64
67
|
with_template.append <<~CONTENT
|
65
|
-
|
66
68
|
group :development do
|
67
69
|
gem "localhost", "~> 1.1"
|
68
70
|
gem "rerun", "~> 0.14"
|
@@ -78,13 +80,25 @@ module Hanamismith
|
|
78
80
|
group :test do
|
79
81
|
gem "capybara", "~> 3.38"
|
80
82
|
gem "cuprite", "~> 0.14"
|
83
|
+
gem "database_cleaner-sequel", "~> 2.0"
|
81
84
|
gem "hanami-rspec", "~> 2.0"
|
85
|
+
gem "launchy", "~> 2.5"
|
82
86
|
gem "rack-test", "~> 2.0"
|
83
87
|
gem "rom-factory", "~> 0.11"
|
84
88
|
end
|
85
89
|
CONTENT
|
86
90
|
end
|
87
91
|
|
92
|
+
def insert_development_and_test_group
|
93
|
+
with_template.insert_before(/group :development/, <<~CONTENT)
|
94
|
+
|
95
|
+
group :development, :test do
|
96
|
+
gem "dotenv", "~> 2.8"
|
97
|
+
end
|
98
|
+
|
99
|
+
CONTENT
|
100
|
+
end
|
101
|
+
|
88
102
|
def remove_zeitwerk = with_template.replace(/.+zeitwerk.+\n\n/, "\n")
|
89
103
|
|
90
104
|
def with_template
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Hanamismith
|
6
|
+
module Builders
|
7
|
+
module Environments
|
8
|
+
# Builds development environment skeleton.
|
9
|
+
class Development
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration, builder: Rubysmith::Builder
|
15
|
+
@configuration = configuration
|
16
|
+
@builder = builder
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
builder.call(configuration.merge(template_path: "%project_name%/env.development.erb"))
|
21
|
+
.render
|
22
|
+
.rename(".env.development")
|
23
|
+
|
24
|
+
configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :configuration, :builder
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Hanamismith
|
6
|
+
module Builders
|
7
|
+
module Environments
|
8
|
+
# Builds test environment skeleton.
|
9
|
+
class Test
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration, builder: Rubysmith::Builder
|
15
|
+
@configuration = configuration
|
16
|
+
@builder = builder
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
builder.call(configuration.merge(template_path: "%project_name%/env.test.erb"))
|
21
|
+
.render
|
22
|
+
.rename(".env.test")
|
23
|
+
|
24
|
+
configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :configuration, :builder
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Hanamismith
|
6
|
+
module Builders
|
7
|
+
module RSpec
|
8
|
+
# Builds project skeleton RSpec application shared context.
|
9
|
+
class ApplicationSharedContext
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration, builder: Rubysmith::Builder
|
15
|
+
@configuration = configuration
|
16
|
+
@builder = builder
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
return configuration unless configuration.build_rspec
|
21
|
+
|
22
|
+
path = "%project_name%/spec/support/shared_contexts/application.rb.erb"
|
23
|
+
builder.call(configuration.merge(template_path: path)).render
|
24
|
+
|
25
|
+
configuration
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :configuration, :builder
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Hanamismith
|
6
|
+
module Builders
|
7
|
+
module RSpec
|
8
|
+
# Builds project skeleton RSpec application database support.
|
9
|
+
class Database
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration, builder: Rubysmith::Builder
|
15
|
+
@configuration = configuration
|
16
|
+
@builder = builder
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
return configuration unless configuration.build_rspec
|
21
|
+
|
22
|
+
path = "%project_name%/spec/support/database.rb.erb"
|
23
|
+
builder.call(configuration.merge(template_path: path)).render
|
24
|
+
|
25
|
+
configuration
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :configuration, :builder
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Hanamismith
|
6
|
+
module Builders
|
7
|
+
module RSpec
|
8
|
+
# Builds project skeleton RSpec application database support.
|
9
|
+
class Factory
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration, builder: Rubysmith::Builder
|
15
|
+
@configuration = configuration
|
16
|
+
@builder = builder
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
return configuration unless configuration.build_rspec
|
21
|
+
|
22
|
+
path = "%project_name%/spec/support/factory.rb.erb"
|
23
|
+
builder.call(configuration.merge(template_path: path)).render
|
24
|
+
|
25
|
+
configuration
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :configuration, :builder
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -30,6 +30,9 @@ module Hanamismith
|
|
30
30
|
Rubysmith::Builders::Reek,
|
31
31
|
Rubysmith::Builders::RSpec::Binstub,
|
32
32
|
Rubysmith::Builders::RSpec::Context,
|
33
|
+
Builders::RSpec::ApplicationSharedContext,
|
34
|
+
Builders::RSpec::Database,
|
35
|
+
Builders::RSpec::Factory,
|
33
36
|
Builders::RSpec::Helper,
|
34
37
|
Builders::RSpec::Hanami,
|
35
38
|
Builders::Rack,
|
@@ -40,7 +43,8 @@ module Hanamismith
|
|
40
43
|
Rubysmith::Extensions::Pragmater,
|
41
44
|
Rubysmith::Extensions::Tocer,
|
42
45
|
Rubysmith::Extensions::Rubocop,
|
43
|
-
Builders::
|
46
|
+
Builders::Environments::Development,
|
47
|
+
Builders::Environments::Test,
|
44
48
|
Builders::Git::Commit
|
45
49
|
].freeze
|
46
50
|
|
@@ -1 +1 @@
|
|
1
|
-
web: rerun --pattern="**/*.{css,erb,js,rb}" -- bundle exec puma --config ./config/puma.rb
|
1
|
+
web: rerun --dir app,config,lib,slices --pattern="**/*.{css,erb,js,rb}" -- bundle exec puma --config ./config/puma.rb
|
@@ -0,0 +1 @@
|
|
1
|
+
DATABASE_URL=postgres://localhost/<%= configuration.project_name %>_development
|
@@ -0,0 +1 @@
|
|
1
|
+
DATABASE_URL=postgres://localhost/<%= configuration.project_name %>_test
|
@@ -1,22 +1,44 @@
|
|
1
1
|
require "capybara/cuprite"
|
2
2
|
require "capybara/rspec"
|
3
|
+
require "database_cleaner/sequel"
|
3
4
|
require "rack/test"
|
4
5
|
require "spec_helper"
|
5
6
|
|
6
7
|
ENV["HANAMI_ENV"] = "test"
|
8
|
+
|
7
9
|
require "hanami/prepare"
|
10
|
+
require_relative "support/database"
|
11
|
+
require_relative "support/factory"
|
12
|
+
|
13
|
+
using Refinements::Pathnames
|
8
14
|
|
15
|
+
Capybara.app = Hanami.app
|
9
16
|
Capybara.server = :puma, {Silent: true}
|
10
17
|
Capybara.javascript_driver = :cuprite
|
18
|
+
Capybara.save_path = Hanami.app.root.join "tmp/capybara"
|
11
19
|
Capybara.register_driver :cuprite do |app|
|
12
20
|
Capybara::Cuprite::Driver.new app, window_size: [1200, 800]
|
13
21
|
end
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
23
|
+
DatabaseCleaner[:sequel].strategy = :transaction
|
24
|
+
|
25
|
+
Pathname.require_tree SPEC_ROOT, "support/factories/**/*.rb"
|
18
26
|
|
19
27
|
RSpec.configure do |config|
|
28
|
+
config.include Capybara::DSL, Capybara::RSpecMatchers, :web
|
20
29
|
config.include Rack::Test::Methods, type: :request
|
30
|
+
config.include Test::Database, :db
|
21
31
|
config.include_context "with Hanami application", type: :request
|
32
|
+
|
33
|
+
config.before :suite do
|
34
|
+
Hanami.app.start :persistence
|
35
|
+
DatabaseCleaner[:sequel].clean_with :truncation
|
36
|
+
end
|
37
|
+
|
38
|
+
config.prepend_before :each, :db do |example|
|
39
|
+
DatabaseCleaner[:sequel].strategy = example.metadata[:js] ? :truncation : :transaction
|
40
|
+
DatabaseCleaner[:sequel].start
|
41
|
+
end
|
42
|
+
|
43
|
+
config.append_after(:each, :db) { DatabaseCleaner[:sequel].clean }
|
22
44
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanamismith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -28,7 +28,7 @@ cert_chain:
|
|
28
28
|
CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
|
29
29
|
RFE=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date: 2023-01-
|
31
|
+
date: 2023-01-19 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: cogger
|
@@ -205,13 +205,17 @@ files:
|
|
205
205
|
- lib/hanamismith/builders/console.rb
|
206
206
|
- lib/hanamismith/builders/core.rb
|
207
207
|
- lib/hanamismith/builders/documentation/readme.rb
|
208
|
-
- lib/hanamismith/builders/
|
208
|
+
- lib/hanamismith/builders/environments/development.rb
|
209
|
+
- lib/hanamismith/builders/environments/test.rb
|
209
210
|
- lib/hanamismith/builders/git/commit.rb
|
210
211
|
- lib/hanamismith/builders/guard.rb
|
211
212
|
- lib/hanamismith/builders/puma/configuration.rb
|
212
213
|
- lib/hanamismith/builders/puma/procfile.rb
|
213
214
|
- lib/hanamismith/builders/rack.rb
|
214
215
|
- lib/hanamismith/builders/rake.rb
|
216
|
+
- lib/hanamismith/builders/rspec/application_shared_context.rb
|
217
|
+
- lib/hanamismith/builders/rspec/database.rb
|
218
|
+
- lib/hanamismith/builders/rspec/factory.rb
|
215
219
|
- lib/hanamismith/builders/rspec/hanami.rb
|
216
220
|
- lib/hanamismith/builders/rspec/helper.rb
|
217
221
|
- lib/hanamismith/builders/slices/main.rb
|
@@ -240,7 +244,8 @@ files:
|
|
240
244
|
- lib/hanamismith/templates/%project_name%/config/puma.rb.erb
|
241
245
|
- lib/hanamismith/templates/%project_name%/config/routes.rb.erb
|
242
246
|
- lib/hanamismith/templates/%project_name%/config/settings.rb.erb
|
243
|
-
- lib/hanamismith/templates/%project_name%/
|
247
|
+
- lib/hanamismith/templates/%project_name%/env.development.erb
|
248
|
+
- lib/hanamismith/templates/%project_name%/env.test.erb
|
244
249
|
- lib/hanamismith/templates/%project_name%/lib/%project_path%/types.rb.erb
|
245
250
|
- lib/hanamismith/templates/%project_name%/slices/main/action.rb.erb
|
246
251
|
- lib/hanamismith/templates/%project_name%/slices/main/actions/home/show.rb.erb
|
@@ -250,6 +255,9 @@ files:
|
|
250
255
|
- lib/hanamismith/templates/%project_name%/slices/main/view.rb.erb
|
251
256
|
- lib/hanamismith/templates/%project_name%/slices/main/views/home/show.rb.erb
|
252
257
|
- lib/hanamismith/templates/%project_name%/spec/hanami_helper.rb.erb
|
258
|
+
- lib/hanamismith/templates/%project_name%/spec/support/database.rb.erb
|
259
|
+
- lib/hanamismith/templates/%project_name%/spec/support/factory.rb.erb
|
260
|
+
- lib/hanamismith/templates/%project_name%/spec/support/shared_contexts/application.rb.erb
|
253
261
|
homepage: https://www.alchemists.io/projects/hanamismith
|
254
262
|
licenses:
|
255
263
|
- Hippocratic-2.1
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "refinements/structs"
|
4
|
-
|
5
|
-
module Hanamismith
|
6
|
-
module Builders
|
7
|
-
# Builds project environment skeleton.
|
8
|
-
class Environment
|
9
|
-
using Refinements::Structs
|
10
|
-
|
11
|
-
def self.call(...) = new(...).call
|
12
|
-
|
13
|
-
def initialize configuration, builder: Rubysmith::Builder
|
14
|
-
@configuration = configuration
|
15
|
-
@builder = builder
|
16
|
-
end
|
17
|
-
|
18
|
-
def call
|
19
|
-
builder.call(configuration.merge(template_path: "%project_name%/envrc.erb"))
|
20
|
-
.render
|
21
|
-
.rename(".envrc")
|
22
|
-
|
23
|
-
configuration
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
attr_reader :configuration, :builder
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
export DATABASE_URL=postgres://localhost/<%= configuration.project_name %>_development
|