inline_forms_installer 8.0.3 → 8.0.4
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d6570363351e7a504578a5e2bba393ec1b7fcd0c5dd3190bbb975a19b1347d8e
|
|
4
|
+
data.tar.gz: 05ec0f8cde0a8ffdafb8a1d5444c2d2246704343d333fe9af49ed8691d6f3a0e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f74cde7fd33066320e1d971713c85854c9e6089958970c6b617d32f9ba3a717df6a08728dcfaed7c4c3670be0019089a5d2ea729625be10a85d398bf439cfa97
|
|
7
|
+
data.tar.gz: 28047b073197118349feba7ce2347ac6dc20a82f0933c1c8550cf009066c11b0f402e87b1c053d49bdbc1ca836a1b5adfe1d936bd39b350a9ec8cfb0bf42067f
|
|
@@ -22,6 +22,7 @@ module InlineFormsInstaller
|
|
|
22
22
|
method_option :email, :aliases => "-e", :default => "admin@example.com", :desc => "specify admin email"
|
|
23
23
|
method_option :password, :aliases => "-p", :default => "admin999", :desc => "specify admin password"
|
|
24
24
|
method_option :skiprvm, :aliases => "--no-rvm", :type => :boolean, :default => false, :desc => "install inline_forms without RVM"
|
|
25
|
+
method_option :user_model, :aliases => "-U", :default => "User", :banner => "CLASS", :desc => "Devise model class (e.g. Member); Warden scope stays :user (current_user)"
|
|
25
26
|
|
|
26
27
|
def create(app_name)
|
|
27
28
|
def self.skiprvm
|
|
@@ -59,6 +60,13 @@ module InlineFormsInstaller
|
|
|
59
60
|
exit 1
|
|
60
61
|
end
|
|
61
62
|
|
|
63
|
+
begin
|
|
64
|
+
user_model_cfg = InlineFormsInstaller::UserModelConfig.from_name(options[:user_model].to_s)
|
|
65
|
+
rescue ArgumentError => e
|
|
66
|
+
say "Error: #{e.message}", :red
|
|
67
|
+
exit 1
|
|
68
|
+
end
|
|
69
|
+
|
|
62
70
|
inline_forms_version = InlineFormsInstaller.inline_forms_version
|
|
63
71
|
# The Gemfile pins `gem "inline_forms", "~> 8"`, so Bundler resolves the
|
|
64
72
|
# highest 8.x available on RubyGems at install time. The
|
|
@@ -67,7 +75,8 @@ module InlineFormsInstaller
|
|
|
67
75
|
# report the constraint instead of a misleading exact version, and let
|
|
68
76
|
# `print_create_summary` read the actual locked versions from the
|
|
69
77
|
# generated app's Gemfile.lock once `bundle install` is done.
|
|
70
|
-
|
|
78
|
+
user_model_note = user_model_cfg.default? ? "" : " (auth model: #{user_model_cfg.class_name})"
|
|
79
|
+
say "Creating #{app_name} (inline_forms ~> 8) with development database #{database}#{user_model_note}...", :green
|
|
71
80
|
|
|
72
81
|
regex = /\A[0-9a-zA-Z][0-9a-zA-Z_-]+[0-9a-zA-Z]\Z/
|
|
73
82
|
if !regex.match(app_name)
|
|
@@ -3,6 +3,7 @@ require "shellwords"
|
|
|
3
3
|
INSTALLER_ROOT = File.expand_path(ENV.fetch("INLINE_FORMS_INSTALLER_ROOT", File.expand_path("..", __dir__)))
|
|
4
4
|
INLINE_FORMS_ROOT = File.expand_path(ENV.fetch("INLINE_FORMS_ROOT", INSTALLER_ROOT))
|
|
5
5
|
require File.join(INSTALLER_ROOT, "lib", "inline_forms_installer", "create_log")
|
|
6
|
+
require File.join(INSTALLER_ROOT, "lib", "inline_forms_installer", "user_model_config")
|
|
6
7
|
|
|
7
8
|
def use_app_rvm_gemset!
|
|
8
9
|
return if ENV["skiprvm"] == "true"
|
|
@@ -262,11 +263,16 @@ say "\n *** Please make sure to create a mysql production database and use 'rail
|
|
|
262
263
|
say "- Devise install..."
|
|
263
264
|
run "bundle exec rails g devise:install"
|
|
264
265
|
|
|
266
|
+
user_cfg = InlineFormsInstaller::UserModelConfig.from_env
|
|
267
|
+
unless user_cfg.default?
|
|
268
|
+
say "- Auth model #{user_cfg.class_name} (#{user_cfg.table_name} table; Warden scope :user → current_user)", :green
|
|
269
|
+
end
|
|
270
|
+
|
|
265
271
|
say "- Create Devise route and add path_prefix..."
|
|
266
272
|
|
|
267
273
|
route <<-ROUTE.strip_heredoc
|
|
268
|
-
|
|
269
|
-
resources
|
|
274
|
+
#{user_cfg.devise_route_line}
|
|
275
|
+
resources :#{user_cfg.plural_route} do
|
|
270
276
|
post 'revert', :on => :member
|
|
271
277
|
get 'list_versions', :on => :member
|
|
272
278
|
end
|
|
@@ -278,11 +284,11 @@ sleep 1 # to get unique migration number
|
|
|
278
284
|
create_file "db/migrate/" +
|
|
279
285
|
Time.now.utc.strftime("%Y%m%d%H%M%S") +
|
|
280
286
|
"_" +
|
|
281
|
-
"
|
|
282
|
-
class
|
|
287
|
+
"#{user_cfg.devise_migration_basename}.rb", <<-DEVISE_MIGRATION.strip_heredoc
|
|
288
|
+
class #{user_cfg.devise_migration_class} < ActiveRecord::Migration[8.0]
|
|
283
289
|
|
|
284
290
|
def change
|
|
285
|
-
create_table(
|
|
291
|
+
create_table(:#{user_cfg.table_name}) do |t|
|
|
286
292
|
## Database authenticatable
|
|
287
293
|
t.string :email, null: false, default: ""
|
|
288
294
|
t.string :encrypted_password, null: false, default: ""
|
|
@@ -318,24 +324,24 @@ class DeviseCreateUsers < ActiveRecord::Migration[8.0]
|
|
|
318
324
|
t.timestamps
|
|
319
325
|
end
|
|
320
326
|
|
|
321
|
-
add_index
|
|
322
|
-
add_index
|
|
323
|
-
# add_index
|
|
324
|
-
# add_index
|
|
327
|
+
add_index :#{user_cfg.table_name}, :email, unique: true
|
|
328
|
+
add_index :#{user_cfg.table_name}, :reset_password_token, unique: true
|
|
329
|
+
# add_index :#{user_cfg.table_name}, :confirmation_token, unique: true
|
|
330
|
+
# add_index :#{user_cfg.table_name}, :unlock_token, unique: true
|
|
325
331
|
end
|
|
326
332
|
end
|
|
327
333
|
DEVISE_MIGRATION
|
|
328
334
|
|
|
329
|
-
say "- Create
|
|
330
|
-
create_file
|
|
331
|
-
class
|
|
332
|
-
set_tab
|
|
335
|
+
say "- Create #{user_cfg.class_name} controller..."
|
|
336
|
+
create_file user_cfg.controller_path, <<-USERS_CONTROLLER.strip_heredoc
|
|
337
|
+
class #{user_cfg.controller_name} < InlineFormsController
|
|
338
|
+
set_tab :#{user_cfg.tab_key}
|
|
333
339
|
end
|
|
334
340
|
USERS_CONTROLLER
|
|
335
341
|
|
|
336
|
-
say "- Create
|
|
337
|
-
create_file
|
|
338
|
-
class
|
|
342
|
+
say "- Create #{user_cfg.class_name} model..."
|
|
343
|
+
create_file user_cfg.model_path, <<-USER_MODEL.strip_heredoc
|
|
344
|
+
class #{user_cfg.class_name} < ApplicationRecord
|
|
339
345
|
|
|
340
346
|
# devise options
|
|
341
347
|
devise :database_authenticatable
|
|
@@ -413,36 +419,36 @@ USER_MODEL
|
|
|
413
419
|
|
|
414
420
|
# Create Locales
|
|
415
421
|
say "- Create locales"
|
|
416
|
-
generate "inline_forms", "Locale name:string title:string
|
|
422
|
+
generate "inline_forms", "Locale name:string title:string #{user_cfg.table_name}:has_many _enabled:yes _presentation:\#{title}"
|
|
417
423
|
append_to_file "db/seeds.rb", "Locale.create({ id: 1, name: 'en', title: 'English' })\n"
|
|
418
424
|
|
|
419
425
|
# Create Roles
|
|
420
426
|
say "- Create roles"
|
|
421
|
-
generate "inline_forms", "Role name:string description:text
|
|
427
|
+
generate "inline_forms", "Role name:string description:text #{user_cfg.table_name}:has_and_belongs_to_many _enabled:yes _presentation:\#{name}"
|
|
422
428
|
append_to_file "db/seeds.rb", "Role.create({ id: 1, name: 'superadmin', description: 'Super Admin can access all.' })\n"
|
|
423
429
|
|
|
424
430
|
# Create Admin User
|
|
425
431
|
|
|
426
|
-
say "- Adding admin
|
|
427
|
-
append_to_file "db/seeds.rb", "
|
|
432
|
+
say "- Adding admin #{user_cfg.class_name.downcase} with email: #{ENV['email']}, password: #{ENV['password']} to seeds.rb"
|
|
433
|
+
append_to_file "db/seeds.rb", "#{user_cfg.class_name}.create({ id: 1, email: '#{ENV['email']}', locale_id: 1, name: 'Admin', password: '#{ENV['password']}', password_confirmation: '#{ENV['password']}' })\n"
|
|
428
434
|
|
|
429
435
|
|
|
430
436
|
sleep 1 # to get unique migration number
|
|
431
437
|
create_file "db/migrate/" +
|
|
432
438
|
Time.now.utc.strftime("%Y%m%d%H%M%S") +
|
|
433
439
|
"_" +
|
|
434
|
-
"
|
|
435
|
-
class
|
|
440
|
+
"#{user_cfg.join_migration_basename}.rb", <<-ROLES_MIGRATION.strip_heredoc
|
|
441
|
+
class #{user_cfg.join_migration_class} < ActiveRecord::Migration[8.0]
|
|
436
442
|
def self.up
|
|
437
|
-
create_table
|
|
443
|
+
create_table :#{user_cfg.join_table}, :id => false, :force => true do |t|
|
|
438
444
|
t.integer :role_id
|
|
439
|
-
t.integer
|
|
445
|
+
t.integer :#{user_cfg.foreign_key}
|
|
440
446
|
end
|
|
441
|
-
execute 'INSERT INTO
|
|
447
|
+
execute 'INSERT INTO #{user_cfg.join_table} VALUES (1,1);'
|
|
442
448
|
end
|
|
443
449
|
|
|
444
450
|
def self.down
|
|
445
|
-
drop_table
|
|
451
|
+
drop_table #{user_cfg.join_table}
|
|
446
452
|
end
|
|
447
453
|
end
|
|
448
454
|
ROLES_MIGRATION
|
|
@@ -611,7 +617,7 @@ create_file "app/models/ability.rb", <<-END_ABILITY.strip_heredoc
|
|
|
611
617
|
def initialize(user)
|
|
612
618
|
# See the wiki for details: https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities
|
|
613
619
|
|
|
614
|
-
user ||=
|
|
620
|
+
user ||= #{user_cfg.class_name}.new # guest user
|
|
615
621
|
|
|
616
622
|
# use this if you get stuck:
|
|
617
623
|
# if user.id == 1 #quick hack
|
|
@@ -1060,9 +1066,10 @@ if ENV['install_example'] == 'true'
|
|
|
1060
1066
|
route "root :to => 'apartments#index'"
|
|
1061
1067
|
|
|
1062
1068
|
example_tests_root = File.join(INSTALLER_ROOT, "lib/installer_templates/example_app_tests")
|
|
1069
|
+
example_user_cfg = InlineFormsInstaller::UserModelConfig.from_env
|
|
1063
1070
|
Dir.glob(File.join(example_tests_root, "**", "*.rb")).sort.each do |abs|
|
|
1064
1071
|
rel = abs.delete_prefix(example_tests_root + File::SEPARATOR).tr("\\", "/")
|
|
1065
|
-
create_file rel, File.read(abs)
|
|
1072
|
+
create_file rel, example_user_cfg.adapt_example_test_source(File.read(abs))
|
|
1066
1073
|
end
|
|
1067
1074
|
|
|
1068
1075
|
say "- Running example regression tests (bundle exec rails test)..."
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
require "active_support/core_ext/string/inflections"
|
|
3
|
+
|
|
4
|
+
module InlineFormsInstaller
|
|
5
|
+
# Devise mapping stays on :users (Warden scope :user → current_user in inline_forms).
|
|
6
|
+
# A custom class (e.g. Member) uses members table, /members routes, and
|
|
7
|
+
# devise_for :users, class_name: "Member", path: "members".
|
|
8
|
+
class UserModelConfig
|
|
9
|
+
DEFAULT_CLASS = "User"
|
|
10
|
+
|
|
11
|
+
def self.from_env(env = ENV)
|
|
12
|
+
from_name(env["user_model"].to_s.strip)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.from_name(name)
|
|
16
|
+
name = DEFAULT_CLASS if name.empty?
|
|
17
|
+
new(name)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def initialize(class_name)
|
|
21
|
+
unless class_name.match?(/\A[A-Z][A-Za-z0-9]*\z/)
|
|
22
|
+
raise ArgumentError, "user model must be a Ruby constant (e.g. User, Member)"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@class_name = class_name
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attr_reader :class_name
|
|
29
|
+
|
|
30
|
+
def default?
|
|
31
|
+
class_name == DEFAULT_CLASS
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def table_name
|
|
35
|
+
class_name.tableize
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def plural_route
|
|
39
|
+
table_name
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def foreign_key
|
|
43
|
+
"#{class_name.underscore}_id"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Rails HABTM join table: plural model names in lexical order (roles_users, members_roles).
|
|
47
|
+
def join_table
|
|
48
|
+
return "roles_users" if default?
|
|
49
|
+
|
|
50
|
+
[table_name, "roles"].sort.join("_")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def controller_name
|
|
54
|
+
"#{class_name.pluralize}Controller"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def controller_path
|
|
58
|
+
"app/controllers/#{table_name}_controller.rb"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def model_path
|
|
62
|
+
"app/models/#{class_name.underscore}.rb"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def tab_key
|
|
66
|
+
class_name.underscore.to_sym
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def devise_migration_basename
|
|
70
|
+
"devise_create_#{table_name}"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def devise_migration_class
|
|
74
|
+
"DeviseCreate#{class_name.pluralize}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def join_migration_basename
|
|
78
|
+
"inline_forms_create_join_table_#{class_name.underscore}_role"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def join_migration_class
|
|
82
|
+
"InlineFormsCreateJoinTable#{class_name}Role"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def devise_route_line
|
|
86
|
+
if default?
|
|
87
|
+
"devise_for :users, :path_prefix => 'auth'"
|
|
88
|
+
else
|
|
89
|
+
"devise_for :users, class_name: \"#{class_name}\", path: \"#{plural_route}\", path_prefix: 'auth'"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def sign_in_path_fragment
|
|
94
|
+
"/auth/#{default? ? 'users' : plural_route}/sign_in"
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def adapt_example_test_source(content)
|
|
98
|
+
return content if default?
|
|
99
|
+
|
|
100
|
+
content = content.gsub("User", class_name)
|
|
101
|
+
content.gsub(%r{/auth/users/sign_in}, sign_in_path_fragment)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
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: 8.0.
|
|
4
|
+
version: 8.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ace Suares
|
|
@@ -81,6 +81,7 @@ files:
|
|
|
81
81
|
- lib/inline_forms_installer/create_log.rb
|
|
82
82
|
- lib/inline_forms_installer/creator.rb
|
|
83
83
|
- lib/inline_forms_installer/installer_core.rb
|
|
84
|
+
- lib/inline_forms_installer/user_model_config.rb
|
|
84
85
|
- lib/inline_forms_installer/version.rb
|
|
85
86
|
- lib/installer_templates/capistrano/Capfile
|
|
86
87
|
- lib/installer_templates/capistrano/deploy.rb
|