inline_forms_installer 7.13.12 → 7.13.13

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: a8dbea5de9afae0eac7ce75c65bcb7b024945186b7d4d0dab9398b4dd05e16f9
4
- data.tar.gz: fede34b67cf22846171f752bdbefeff390dc79d2406d39153743e5bc6311ef87
3
+ metadata.gz: 040522701135611fb98f42262dde130ed4abf544dbcab5d61cb4bac8c4cdb381
4
+ data.tar.gz: 59e927280fe2d3de6d027e8adcd6ae432174225d7cf619ff26fc4b4982520864
5
5
  SHA512:
6
- metadata.gz: d14f2aa54349546359d9543c607e623af3cafeffc21d4ea9e5a3cd3946e5d9f7a2b9146f3bb7bf5eaf0235750a2f99a5f0de5ddbb9554d53308d61b207e1df9a
7
- data.tar.gz: 79625b1114078e2ad4aef25f5897a273f24159ca328d23e00b92a94140235017c47eac49672ad31e02debd5c969855e9fc3bbe82994ba2d15db5556b23f27805
6
+ metadata.gz: 578ebcf29d67df3e127a0eff5049a8cb2799fd9abb503ac89c5487e36f11ae475d5a4cfbf37bbdd8efeb69ade61caa8d1267aa9d88ed3f74dcd008abc4d9d402
7
+ data.tar.gz: 95fa9bfad065ed0810f84093baa5b513a207ae2cc2fe3b5ac182b3e2baf46ae70a09a32eee095242f6f208ed3263e0fb00d38ae04d47bebd7129d2cac9b39092
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "fileutils"
3
+ require "shellwords"
4
+
5
+ module InlineFormsInstaller
6
+ module CreateLog
7
+ module_function
8
+
9
+ def basename_for(started_at = Time.now)
10
+ "inline_forms_create-#{started_at.strftime('%Y%m%d-%H%M%S')}.log"
11
+ end
12
+
13
+ def final_path(app_name, started_at = Time.now)
14
+ File.expand_path(File.join(app_name, "log", basename_for(started_at)))
15
+ end
16
+
17
+ def tee_rails_new(app_name, shell_command, started_at: Time.now)
18
+ final = final_path(app_name, started_at)
19
+ tmp = File.expand_path(basename_for(started_at))
20
+ ENV["INLINE_FORMS_INSTALLER_LOG"] = final
21
+ ENV["INLINE_FORMS_CREATE_STARTED_AT"] = started_at.iso8601
22
+
23
+ ok = system(
24
+ "bash", "-c",
25
+ "#{shell_command} 2>&1 | tee #{Shellwords.escape(tmp)}; exit ${PIPESTATUS[0]}"
26
+ )
27
+
28
+ if ok && File.directory?(app_name)
29
+ FileUtils.mkdir_p(File.join(app_name, "log"))
30
+ FileUtils.mv(tmp, final) if File.exist?(tmp)
31
+ elsif File.exist?(tmp)
32
+ FileUtils.mkdir_p(File.dirname(final))
33
+ FileUtils.mv(tmp, final)
34
+ end
35
+
36
+ [ok, final]
37
+ end
38
+
39
+ def append_section(path, title, body)
40
+ return if path.to_s.strip.empty?
41
+
42
+ FileUtils.mkdir_p(File.dirname(path))
43
+ File.open(path, "a") { |f| f.puts "\n=== #{title} ===\n#{body}" }
44
+ end
45
+ end
46
+ end
@@ -1,6 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require "securerandom"
3
3
  require "thor"
4
+ require_relative "create_log"
4
5
 
5
6
  module InlineFormsInstaller
6
7
  class Creator < Thor
@@ -20,7 +21,6 @@ module InlineFormsInstaller
20
21
  method_option :example, :type => :boolean, :desc => "install the example app. uses sqlite as development database"
21
22
  method_option :email, :aliases => "-e", :default => "admin@example.com", :desc => "specify admin email"
22
23
  method_option :password, :aliases => "-p", :default => "admin999", :desc => "specify admin password"
23
- method_option :runtest, :aliases => "--run-test", :default => false, :desc => "run tests"
24
24
  method_option :skiprvm, :aliases => "--no-rvm", :type => :boolean, :default => false, :desc => "install inline_forms without RVM"
25
25
 
26
26
  def create(app_name)
@@ -28,10 +28,6 @@ module InlineFormsInstaller
28
28
  options[:skiprvm]
29
29
  end
30
30
 
31
- def self.runtest
32
- options[:runtest]
33
- end
34
-
35
31
  def self.install_example?
36
32
  options[:example]
37
33
  end
@@ -117,17 +113,43 @@ module InlineFormsInstaller
117
113
  rails_invocation = compatible_rails ? "rails _#{compatible_rails}_" : "rails"
118
114
  say "Generating app with: #{rails_invocation} new ...", :green
119
115
 
120
- unless run("#{rails_invocation} new #{app_name} -m #{app_template_file} --skip-bundle --skip-bootsnap --javascript=importmap")
116
+ started_at = Time.now
117
+ log_path = InlineFormsInstaller::CreateLog.final_path(app_name, started_at)
118
+ say "Install log: #{log_path}", :green
119
+
120
+ shell_cmd = [
121
+ rails_invocation, "new", app_name, "-m", app_template_file,
122
+ "--skip-bundle", "--skip-bootsnap", "--javascript=importmap"
123
+ ].join(" ")
124
+
125
+ ok, log_path = InlineFormsInstaller::CreateLog.tee_rails_new(app_name, shell_cmd, started_at: started_at)
126
+ unless ok
121
127
  say "Rails could not create the app '#{app_name}', maybe because it is a reserved word...", :red
128
+ say "Install log: #{log_path}", :red
122
129
  exit 1
123
130
  end
124
131
 
125
- say "Created #{app_name}. Before running Rails, use the app's RVM gemset and Bundler:", :green
126
- say " cd #{app_name}", :green
127
- say " rvm use .", :green
128
- say " bundle install", :green
129
- say " bundle exec rails test", :green
132
+ print_create_summary(app_name, log_path, started_at)
133
+ end
134
+
135
+ def print_create_summary(app_name, log_path, started_at)
136
+ duration = (Time.now - started_at).round(1)
137
+ bundle_ok = false
138
+ Dir.chdir(app_name) do
139
+ bundle_ok = system("bundle", "check", out: File::NULL, err: File::NULL)
140
+ end
141
+
142
+ test_summary = ENV["INLINE_FORMS_CREATE_TEST_SUMMARY"].to_s
143
+ test_summary = "(not run — create without --example)" if test_summary.empty?
144
+
145
+ say ""
146
+ say "Install complete (#{duration}s)", :green
147
+ say " inline_forms #{InlineFormsInstaller.inline_forms_version} / inline_forms_installer #{InlineFormsInstaller::VERSION}", :green
148
+ say " bundle check: #{bundle_ok ? 'ok' : 'FAILED'}", bundle_ok ? :green : :red
149
+ say " tests: #{test_summary}", :green
150
+ say "Install log: #{log_path}", :green
130
151
  end
152
+ private :print_create_summary
131
153
  end
132
154
  end
133
155
 
@@ -1,5 +1,8 @@
1
+ require "open3"
2
+
1
3
  INSTALLER_ROOT = File.expand_path(ENV.fetch("INLINE_FORMS_INSTALLER_ROOT", File.expand_path("..", __dir__)))
2
4
  INLINE_FORMS_ROOT = File.expand_path(ENV.fetch("INLINE_FORMS_ROOT", INSTALLER_ROOT))
5
+ require File.join(INSTALLER_ROOT, "lib", "inline_forms_installer", "create_log")
3
6
 
4
7
  def bundle_install!
5
8
  say "- Running bundle install..."
@@ -95,6 +98,7 @@ gem_group :development do
95
98
  gem 'capistrano', require: false
96
99
  gem 'capistrano3-unicorn'
97
100
  gem 'listen'
101
+ gem 'foreman'
98
102
  gem 'puma', '>= 5.0'
99
103
  gem 'rvm-capistrano', :require => false
100
104
  gem 'rvm1-capistrano3', require: false
@@ -111,17 +115,13 @@ gem_group :production do
111
115
  end
112
116
 
113
117
  say "- Running bundle..."
114
- run "gem install bundler"
115
- vh_gem_dirs = [
116
- ENV["VALIDATION_HINTS_ROOT"],
117
- File.expand_path("~/validation_hints"),
118
- File.expand_path("~/code/validation_hints"),
119
- File.expand_path("../validation_hints", INSTALLER_ROOT)
120
- ].compact.uniq
121
- vh_gem = vh_gem_dirs.flat_map { |dir| Dir[File.join(dir, "validation_hints-*.gem")] }.sort.last
122
- if vh_gem && File.file?(vh_gem)
123
- say "- Installing #{File.basename(vh_gem)} (local build; not on RubyGems yet)..."
124
- run "gem install #{vh_gem} --no-document"
118
+ run "gem install bundler --no-document"
119
+ if (vh_root = ENV["VALIDATION_HINTS_ROOT"]) && File.directory?(vh_root)
120
+ vh_gem = Dir[File.join(vh_root, "validation_hints-*.gem")].sort.last
121
+ if vh_gem && File.file?(vh_gem)
122
+ say "- Installing #{File.basename(vh_gem)} from VALIDATION_HINTS_ROOT..."
123
+ run "gem install #{vh_gem} --no-document"
124
+ end
125
125
  end
126
126
  bundle_install!
127
127
 
@@ -1049,19 +1049,27 @@ if ENV['install_example'] == 'true'
1049
1049
  route 'get "apartments/name_list", to: "apartments#name_list", as: :apartment_name_list'
1050
1050
  route "root :to => 'apartments#index'"
1051
1051
 
1052
- say "- Adding example app regression tests (bundle exec rails test)..."
1053
1052
  example_tests_root = File.join(INSTALLER_ROOT, "lib/installer_templates/example_app_tests")
1054
1053
  Dir.glob(File.join(example_tests_root, "**", "*.rb")).sort.each do |abs|
1055
1054
  rel = abs.delete_prefix(example_tests_root + File::SEPARATOR).tr("\\", "/")
1056
1055
  create_file rel, File.read(abs)
1057
1056
  end
1058
1057
 
1058
+ say "- Running example regression tests (bundle exec rails test)..."
1059
+ test_out, test_status = Open3.capture2e("bundle", "exec", "rails", "test")
1060
+ if (log_path = ENV["INLINE_FORMS_INSTALLER_LOG"]).to_s != ""
1061
+ InlineFormsInstaller::CreateLog.append_section(log_path, "bundle exec rails test", test_out)
1062
+ end
1063
+ summary_line = test_out.lines.reverse.find { |l| l =~ /\d+ runs,/ }
1064
+ ENV["INLINE_FORMS_CREATE_TEST_SUMMARY"] = summary_line&.strip || "failed (no summary line)"
1065
+ abort "ERROR: bundle exec rails test failed during --example install.\n#{test_out}" unless test_status.success?
1066
+
1059
1067
  say "\nDone! Example app (Photo + Apartment + Owner) is ready.", :yellow
1060
- say " bundle exec rails test # example regression tests", :yellow
1061
- say " bundle exec rails s # then http://localhost:3000/apartments", :yellow
1062
- say " More menu Apartment names (first 10) # /apartments/name_list", :yellow
1063
- say " More menu → Owners # /owners (per-owner 2 tabs)", :yellow
1064
- say " Log in: #{ENV["email"]} / #{ENV["password"]}", :yellow
1068
+ say " cd #{File.basename(Dir.pwd)} && rvm use . && bundle exec rails s", :yellow
1069
+ say " http://localhost:3000/apartments — #{ENV["email"]} / #{ENV["password"]}", :yellow
1070
+ if (log_path = ENV["INLINE_FORMS_INSTALLER_LOG"]).to_s != ""
1071
+ say " Install log: #{log_path}", :yellow
1072
+ end
1065
1073
  end
1066
1074
  # done!
1067
1075
  say "\nDone! Now make your tables with 'bundle exec rails g inline_forms ...", :yellow
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module InlineFormsInstaller
3
- VERSION = "7.13.12"
3
+ VERSION = "7.13.13"
4
4
 
5
5
  # Written into generated apps' `.ruby-version` (must match gemspec `required_ruby_version`).
6
6
  TARGET_RUBY_VERSION = "ruby-4.0.4"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inline_forms_installer
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.13.12
4
+ version: 7.13.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ace Suares
@@ -78,6 +78,7 @@ files:
78
78
  - inline_forms_installer.gemspec
79
79
  - lib/inline_forms_installer.rb
80
80
  - lib/inline_forms_installer/app_template.rb
81
+ - lib/inline_forms_installer/create_log.rb
81
82
  - lib/inline_forms_installer/creator.rb
82
83
  - lib/inline_forms_installer/installer_core.rb
83
84
  - lib/inline_forms_installer/version.rb