hanamismith 1.4.0 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 445647f6ddc43e3d30c619a1bac483ba08fba6ee0a6f4e8dd5d05b7b23671c31
4
- data.tar.gz: 261de84aec6a7455421b76cdcdfe7d7c2a2bb1179264f24930a88c0f7700a5e1
3
+ metadata.gz: 5a498eb523292f2179b6c7fc4e29bd0f92670893bc5eeb80bad2eb964594d47b
4
+ data.tar.gz: 0eda5f7e5af5210003b92339f097b2cf07a688ede20612112e2731787448fd3a
5
5
  SHA512:
6
- metadata.gz: 885901810474886fd5f676bffaf0fb71afb68a6d57d41e2c53501abdde05bc6b67486c28490e4853cfc19265cd9fe2a0605d2705f891c42dafcfd63e20d511ce
7
- data.tar.gz: c650e51bb7ff77e0de34a4695150942ffea161083e356b808acc424b5ddb31a4b854644d992db371582520c40bcca0fefcbdaaf4b0ea70f54029934036c70ce6
6
+ metadata.gz: c146e1cbe4a7f033f2b6d2fa104f52b9dfdab9162d4d867b75d1a04808fb8be8819aef92cb05703d125f96fe18ec1bdc83fccfea8c047ca777cbb19cc3214b99
7
+ data.tar.gz: 3aebc1620be325b6bd6b828279a5c132b76a4d0d46d3d9557dbd80751c6f6399835303af8384cd0a5765ccd3d567a2ebaf7e204c6c2d7e0a60229b3c8ed85b13
checksums.yaml.gz.sig CHANGED
Binary file
data/hanamismith.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "hanamismith"
5
- spec.version = "1.4.0"
5
+ spec.version = "1.5.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/hanamismith"
@@ -25,13 +25,13 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = "~> 3.4"
26
26
  spec.add_dependency "cogger", "~> 1.0"
27
27
  spec.add_dependency "containable", "~> 1.1"
28
- spec.add_dependency "dry-monads", "~> 1.6"
28
+ spec.add_dependency "dry-monads", "~> 1.8"
29
29
  spec.add_dependency "dry-schema", "~> 1.13"
30
30
  spec.add_dependency "etcher", "~> 3.0"
31
31
  spec.add_dependency "htmx", "~> 2.0"
32
32
  spec.add_dependency "infusible", "~> 4.0"
33
33
  spec.add_dependency "refinements", "~> 13.0"
34
- spec.add_dependency "rubysmith", "~> 8.2"
34
+ spec.add_dependency "rubysmith", "~> 8.3"
35
35
  spec.add_dependency "runcom", "~> 12.0"
36
36
  spec.add_dependency "sod", "~> 1.0"
37
37
  spec.add_dependency "spek", "~> 4.0"
@@ -47,11 +47,11 @@ module Hanamismith
47
47
 
48
48
  def insert_main
49
49
  with_template.insert_after "source", <<~CONTENT
50
- gem "dry-monads", "~> 1.6"
51
50
  gem "dry-schema", "~> 1.13"
52
51
  gem "dry-types", "~> 1.7"
53
52
  gem "dry-validation", "~> 1.10"
54
53
  gem "htmx", "~> 2.1"
54
+ gem "overmind", "~> 2.5"
55
55
  gem "puma", "~> 6.6"
56
56
  gem "rack-attack", "~> 6.7"
57
57
  CONTENT
@@ -6,16 +6,13 @@ module Hanamismith
6
6
  module Builders
7
7
  module Docker
8
8
  # Builds Dockerfile configuration.
9
- class File < Rubysmith::Builders::Docker::File
9
+ class File < Rubysmith::Builders::Abstract
10
10
  using Refinements::Struct
11
11
 
12
12
  def call
13
13
  return false unless settings.build_docker
14
14
 
15
- super
16
- builder.call(settings.merge(template_path: "%project_name%/Dockerfile.erb"))
17
- .render
18
- .insert_after(/RACK_ENV/, "ENV HANAMI_ENV=production\n")
15
+ builder.call(settings.merge(template_path: "%project_name%/Dockerfile.erb")).render
19
16
  true
20
17
  end
21
18
  end
@@ -59,7 +59,7 @@ module Hanamismith
59
59
  Rubysmith::Builders::Docker::Build,
60
60
  Rubysmith::Builders::Docker::Console,
61
61
  Rubysmith::Builders::Docker::Entrypoint,
62
- Rubysmith::Builders::Docker::File,
62
+ Builders::Docker::File,
63
63
  Rubysmith::Builders::Docker::Ignore,
64
64
  Rubysmith::Extensions::Bundler,
65
65
  Rubysmith::Extensions::Pragmater,
@@ -99,6 +99,7 @@ module Hanamismith
99
99
  on Rubysmith::CLI::Actions::License, settings: Container[:settings]
100
100
  on Rubysmith::CLI::Actions::Maximum, settings: Container[:settings]
101
101
  on Rubysmith::CLI::Actions::Minimum, settings: Container[:settings]
102
+ on Rubysmith::CLI::Actions::Monads, settings: Container[:settings]
102
103
  on Rubysmith::CLI::Actions::Rake, settings: Container[:settings]
103
104
  on Rubysmith::CLI::Actions::Readme, settings: Container[:settings]
104
105
  on Rubysmith::CLI::Actions::Reek, settings: Container[:settings]
@@ -0,0 +1,76 @@
1
+ # syntax = docker/dockerfile:1.4
2
+
3
+ ARG RUBY_VERSION=<%= RUBY_VERSION %>
4
+
5
+ FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base
6
+
7
+ LABEL description="<%= [settings.organization_label, "Application"].compact.join " " %>"
8
+ LABEL maintainer="<%= settings.author_name %> <<%= settings.author_email %>>"
9
+
10
+ ENV RACK_ENV=production
11
+ ENV HANAMI_ENV=production
12
+ ENV HANAMI_SERVE_ASSETS=true
13
+ ENV BUNDLE_DEPLOYMENT=1
14
+ ENV BUNDLE_PATH=/usr/local/bundle
15
+ ENV BUNDLE_WITHOUT="development:quality:test:tools"
16
+
17
+ WORKDIR /app
18
+
19
+ RUN <<STEPS
20
+ apt-get update -qq \
21
+ && apt-get install --no-install-recommends -y \
22
+ curl \
23
+ libjemalloc2 \
24
+ nodejs \
25
+ npm \
26
+ postgresql-client \
27
+ tmux \
28
+ && rm -rf /var/lib/apt/lists /var/cache/apt/archives
29
+ STEPS
30
+
31
+ FROM base AS build
32
+
33
+ RUN <<STEPS
34
+ apt-get update -qq \
35
+ && apt-get install --no-install-recommends -y build-essential \
36
+ libpq-dev \
37
+ libyaml-dev \
38
+ pkg-config \
39
+ && rm -rf /var/lib/apt/lists /var/cache/apt/archives
40
+ STEPS
41
+
42
+ COPY .ruby-version Gemfile Gemfile.lock .node-version package.json package-lock.json ./
43
+
44
+ RUN <<STEPS
45
+ bundle install
46
+ npm install
47
+ rm -rf "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
48
+ <% if settings.build_bootsnap %>
49
+ bundle exec bootsnap precompile --gemfile
50
+ <% end %>
51
+ STEPS
52
+
53
+ COPY . .
54
+ <% if settings.build_bootsnap %>
55
+ RUN bundle exec bootsnap precompile app/ lib/ slices/
56
+ <% end %>
57
+ FROM base
58
+ COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}"
59
+ COPY --from=build /app /app
60
+
61
+ RUN <<STEPS
62
+ mkdir -p /app/log
63
+ mkdir -p /app/tmp
64
+ STEPS
65
+
66
+ RUN groupadd --system --gid 1000 app && \
67
+ useradd app --uid 1000 --gid 1000 --create-home --shell /bin/bash && \
68
+ chown -R app:app . public log tmp
69
+
70
+ USER 1000:1000
71
+
72
+ ENTRYPOINT ["/app/bin/docker/entrypoint"]
73
+
74
+ EXPOSE 2300
75
+
76
+ CMD ["bundle", "exec", "overmind", "start", "--port-step", "10", "--can-die", "migrate,assets"]
@@ -11,6 +11,7 @@
11
11
  <meta name="author" content="Hanamismith">
12
12
  <meta name="mobile-web-app-capable" content="yes">
13
13
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
14
+ <meta name="view-transition" content="same-origin">
14
15
 
15
16
  <link title="<%= settings.project_label %>: Favicon"
16
17
  rel="icon"
@@ -7,6 +7,12 @@ require "hanami"
7
7
  Dry::Schema.load_extensions :monads
8
8
  Dry::Validation.load_extensions :monads
9
9
 
10
+ prepare_container do |container|
11
+ container.config.component_dirs.dir "app" do |dir|
12
+ dir.memoize = -> component { component.key.start_with? "repositories." }
13
+ end
14
+ end
15
+
10
16
  config.actions.content_security_policy.then do |csp|
11
17
  csp[:manifest_src] = "'self'"
12
18
  csp[:script_src] += " 'unsafe-eval' 'unsafe-inline' https://unpkg.com/"
@@ -18,7 +24,7 @@ require "hanami"
18
24
 
19
25
  config.logger = config.logger.instance.add_backend(
20
26
  colorize: false,
21
- stream: Hanami.app.root.join("log/development.log")
27
+ stream: root.join("log/development.log")
22
28
  )
23
29
  end
24
30
  end
@@ -26,10 +26,13 @@ Pathname.require_tree SPEC_ROOT.join("support/factories")
26
26
 
27
27
  RSpec.configure do |config|
28
28
  config.include Capybara::DSL, Capybara::RSpecMatchers, :web
29
- config.include Dry::Monads[:result]
30
29
  config.include Rack::Test::Methods, type: :request
31
30
 
32
- config.include_context "with Hanami application", type: :request
31
+ config.define_derived_metadata(file_path: %r(/spec/features/)) { it[:type] = :feature }
32
+ config.define_derived_metadata(file_path: %r(/spec/requests/)) { it[:type] = :request }
33
+
34
+ config.include_context "with application", type: :request
35
+ config.include_context "with application", type: :feature
33
36
 
34
37
  databases = proc do
35
38
  Hanami.app.slices.with_nested.prepend(Hanami.app).each.with_object Set.new do |slice, dbs|
@@ -1,3 +1,3 @@
1
- RSpec.shared_context "with Hanami application" do
1
+ RSpec.shared_context "with application" do
2
2
  let(:app) { Hanami.app }
3
3
  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: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -9,9 +9,9 @@ bindir: exe
9
9
  cert_chain:
10
10
  - |
11
11
  -----BEGIN CERTIFICATE-----
12
- MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
12
+ MIIENjCCAp6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
13
13
  a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
14
- aW8wHhcNMjMwMzIyMTYxNDQxWhcNMjUwMzIxMTYxNDQxWjBBMQ8wDQYDVQQDDAZi
14
+ aW8wHhcNMjUwMzIyMTQ1NDE3WhcNMjYwMzIyMTQ1NDE3WjBBMQ8wDQYDVQQDDAZi
15
15
  cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
16
16
  GRYCaW8wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCro8tj5/E1Hg88
17
17
  f4qfiwPVd2zJQHvdYt4GHVvuHRRgx4HGhJuNp+4BId08RBn7V6V1MW6MY3kezRBs
@@ -21,20 +21,19 @@ cert_chain:
21
21
  QzzPxZBiRB1sgtbt1gUbVI262ZDq1gR+HxPFmp+Cgt7ZLIJZAtesQvtcMzseXpfn
22
22
  hpmm0Sw22KGhRAy/mqHBRhDl5HqS1SJp2Ko3lcnpXeFResp0HNlt8NSu13vhC08j
23
23
  GUHU9MyIXbFOsnp3K3ADrAVjPWop8EZkmUR3MV/CUm00w2cZHCSGiXl1KMpiVKvk
24
- Ywr1gd2ZME4QLSo+EXUtLxDUa/W3xnBS8dBOuMMz02FPWYr3PN8CAwEAAaN7MHkw
24
+ Ywr1gd2ZME4QLSo+EXUtLxDUa/W3xnBS8dBOuMMz02FPWYr3PN8CAwEAAaM5MDcw
25
25
  CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAFgmv0tYMZnItuPycSM
26
- F5wykJEVMB8GA1UdEQQYMBaBFGJyb29rZUBhbGNoZW1pc3RzLmlvMB8GA1UdEgQY
27
- MBaBFGJyb29rZUBhbGNoZW1pc3RzLmlvMA0GCSqGSIb3DQEBCwUAA4IBgQAX+EGY
28
- 9RLYGxF1VLZz+G1ACQc4uyrCB6kXwI06kzUa5dF9tPXqTX9ffnz3/W8ck2IQhKzu
29
- MKO2FVijzbDWTsZeZGglS4E+4Jxpau1lU9HhOIcKolv6LeC6UdALTFudY+GLb8Xw
30
- REXgaJkjzzhkUSILmEnRwEbY08dVSl7ZAaxVI679vfI2yapLlIwpbBgmQTiTvPr3
31
- qyyLUno9flYEOv9fmGHunSrM+gE0/0niGTXa5GgXBXYGS2he4LQGgSBfGp/cTwMU
32
- rDKJRcusZ12lNBeDfgqACz/BBJF8FLodgk6rGMRZz7+ZmjjHEmpG5bQpR6Q2BuWL
33
- XMtYk/QzaWuhiR7pWjiF8jbdd7RO6or0ohq7iFkokz/5xrtQ/vPzU2RQ3Qc6YaKw
34
- 3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
35
- gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
26
+ F5wykJEVMA0GCSqGSIb3DQEBCwUAA4IBgQBlzRfyAYx/fCFjizS0Npxw4+4T3aYL
27
+ hbXoDqQRWjxuhFZcXUymhz3r8/Ltyri9lSof8grzB+8/+mrMVms7Gwt5qolk6zdn
28
+ FkySGy/jmpN12ldOHFbBEnyVBZNBvOBVb8zkkw8PhiHdBdXOUm4Jy39yJvBLfjcC
29
+ iM1aeWPmgPy1GbvZU+leRGZLt6dRIR9oCDXcWLRjha8xLMoz6Yn9fJBYexBA3iEz
30
+ h5S7pn4AX/JhVRiSyl8pAy4jEKydpyQrliH3gHkpNmUS/XDczP+9xX1bAB4BvqL2
31
+ NCxMcQ+hiJNqCKpPgHxaOOHZfIxV33logIuPEQ8NryHAwZ9ZWnwtYDE8kQGGKskI
32
+ Kkm6QT474hZl7MpwiJjWgW313CR7jUEekQahX1QxCxHPI7LSrKpno0plH3uWIOQp
33
+ KUlkb9uyACBgyRO52ZHiDVI8YvtU5O/j9pSes9/3XgvBeC1onx4qWp+uRX7eVsYS
34
+ GiijocTc3enZVrXERetaXj8/9XWs3fB3HWY=
36
35
  -----END CERTIFICATE-----
37
- date: 2025-03-09 00:00:00.000000000 Z
36
+ date: 1980-01-02 00:00:00.000000000 Z
38
37
  dependencies:
39
38
  - !ruby/object:Gem::Dependency
40
39
  name: cogger
@@ -70,14 +69,14 @@ dependencies:
70
69
  requirements:
71
70
  - - "~>"
72
71
  - !ruby/object:Gem::Version
73
- version: '1.6'
72
+ version: '1.8'
74
73
  type: :runtime
75
74
  prerelease: false
76
75
  version_requirements: !ruby/object:Gem::Requirement
77
76
  requirements:
78
77
  - - "~>"
79
78
  - !ruby/object:Gem::Version
80
- version: '1.6'
79
+ version: '1.8'
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: dry-schema
83
82
  requirement: !ruby/object:Gem::Requirement
@@ -154,14 +153,14 @@ dependencies:
154
153
  requirements:
155
154
  - - "~>"
156
155
  - !ruby/object:Gem::Version
157
- version: '8.2'
156
+ version: '8.3'
158
157
  type: :runtime
159
158
  prerelease: false
160
159
  version_requirements: !ruby/object:Gem::Requirement
161
160
  requirements:
162
161
  - - "~>"
163
162
  - !ruby/object:Gem::Version
164
- version: '8.2'
163
+ version: '8.3'
165
164
  - !ruby/object:Gem::Dependency
166
165
  name: runcom
167
166
  requirement: !ruby/object:Gem::Requirement
@@ -224,8 +223,8 @@ executables:
224
223
  - hanamismith
225
224
  extensions: []
226
225
  extra_rdoc_files:
227
- - README.adoc
228
226
  - LICENSE.adoc
227
+ - README.adoc
229
228
  files:
230
229
  - LICENSE.adoc
231
230
  - README.adoc
@@ -273,6 +272,7 @@ files:
273
272
  - lib/hanamismith/extensions/npm.rb
274
273
  - lib/hanamismith/templates/%project_name%/.circleci/config.yml.erb
275
274
  - lib/hanamismith/templates/%project_name%/.github/workflows/ci.yml.erb
275
+ - lib/hanamismith/templates/%project_name%/Dockerfile.erb
276
276
  - lib/hanamismith/templates/%project_name%/Guardfile.erb
277
277
  - lib/hanamismith/templates/%project_name%/Procfile.dev.erb
278
278
  - lib/hanamismith/templates/%project_name%/Procfile.erb
@@ -349,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
349
349
  - !ruby/object:Gem::Version
350
350
  version: '0'
351
351
  requirements: []
352
- rubygems_version: 3.6.5
352
+ rubygems_version: 3.6.7
353
353
  specification_version: 4
354
354
  summary: A command line interface for smithing Hanami projects.
355
355
  test_files: []
metadata.gz.sig CHANGED
Binary file