thredded_create_app 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/thredded_create_app/generator.rb +8 -2
- data/lib/thredded_create_app/tasks/add_display_name_to_users.rb +4 -4
- data/lib/thredded_create_app/tasks/add_display_name_to_users/add_display_name_to_users.rb.erb +17 -0
- data/lib/thredded_create_app/tasks/add_jquery.rb +30 -0
- data/lib/thredded_create_app/tasks/add_thredded.rb +5 -3
- data/lib/thredded_create_app/tasks/base.rb +18 -2
- data/lib/thredded_create_app/tasks/setup_app_skeleton.rb +0 -5
- data/lib/thredded_create_app/tasks/setup_database.rb +4 -1
- data/lib/thredded_create_app/version.rb +1 -1
- metadata +4 -4
- data/lib/thredded_create_app/tasks/add_display_name_to_users/add_display_name_to_users.rb +0 -22
- data/lib/thredded_create_app/tasks/add_thredded/add_admin_to_users.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5dce72b9a0003fe725e6e4ee50897f6d67c0d51
|
4
|
+
data.tar.gz: '09f4480264a614040a97dd322441cd4dac9748c0'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d2ae61e5101b67ae09d54207c710667c4a84d83ad7f977266a2ecef654723b28584d513c99bb66aa0228f693833980fe21634ec43f52503b4526f1550efb96a
|
7
|
+
data.tar.gz: 759a81eccb99b99a6fa9f05b291c31de5b0740a49c0603f7549211a99d432ef3c7a0ca6b1adeb93eae0c7d697b1ba688f4b38f7f76b3edc54bd28b5e6847f282
|
@@ -9,6 +9,7 @@ require 'thredded_create_app/tasks/add_simple_form'
|
|
9
9
|
require 'thredded_create_app/tasks/add_devise'
|
10
10
|
require 'thredded_create_app/tasks/add_roadie'
|
11
11
|
require 'thredded_create_app/tasks/add_rails_email_preview'
|
12
|
+
require 'thredded_create_app/tasks/add_jquery'
|
12
13
|
require 'thredded_create_app/tasks/add_thredded'
|
13
14
|
require 'thredded_create_app/tasks/add_display_name_to_users'
|
14
15
|
require 'thredded_create_app/tasks/setup_database'
|
@@ -69,6 +70,7 @@ module ThreddedCreateApp
|
|
69
70
|
Tasks::AddDevise,
|
70
71
|
Tasks::AddRailsEmailPreview,
|
71
72
|
Tasks::AddRoadie,
|
73
|
+
Tasks::AddJquery,
|
72
74
|
Tasks::AddThredded,
|
73
75
|
Tasks::AddDisplayNameToUsers,
|
74
76
|
Tasks::SetupAppSkeleton,
|
@@ -85,9 +87,13 @@ module ThreddedCreateApp
|
|
85
87
|
|
86
88
|
# @final
|
87
89
|
def bundle # rubocop:disable Metrics/AbcSize
|
90
|
+
gemfile_contents = File.read('Gemfile')
|
91
|
+
gems_to_add = gems.reject do |gem|
|
92
|
+
gemfile_contents =~ /^gem\s*['"]#{Regexp.escape(gem[0])}['"]/
|
93
|
+
end
|
88
94
|
File.open('Gemfile', 'a') do |f|
|
89
95
|
log_info 'Writing gems to Gemfile'
|
90
|
-
|
96
|
+
gems_to_add.each do |(name, version, groups, path)|
|
91
97
|
f.puts ["gem '#{name}'",
|
92
98
|
(version if version),
|
93
99
|
("groups: %i(#{groups * ' '})" if groups),
|
@@ -97,7 +103,7 @@ module ThreddedCreateApp
|
|
97
103
|
log_info 'Installing gems'
|
98
104
|
run "bundle install#{' --quiet' unless verbose?}" \
|
99
105
|
"#{' --path .bundle' unless File.writable?(Gem.dir)}"
|
100
|
-
git_commit "Add gems: #{
|
106
|
+
git_commit "Add gems: #{gems_to_add.map { |(name, *)| name } * ', '}"
|
101
107
|
end
|
102
108
|
end
|
103
109
|
end
|
@@ -22,9 +22,9 @@ module ThreddedCreateApp
|
|
22
22
|
private
|
23
23
|
|
24
24
|
def add_display_name
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
add_migration 'add_display_name_to_users',
|
26
|
+
template: 'add_display_name_to_users/' \
|
27
|
+
'add_display_name_to_users.rb.erb'
|
28
28
|
model_path = 'app/models/user.rb'
|
29
29
|
inject_into_file model_path,
|
30
30
|
after: "ApplicationRecord\n",
|
@@ -84,7 +84,7 @@ module ThreddedCreateApp
|
|
84
84
|
def uniq_display_name!
|
85
85
|
if display_name.present?
|
86
86
|
new_display_name = display_name
|
87
|
-
i
|
87
|
+
i = 0
|
88
88
|
while User.exists?(display_name: new_display_name)
|
89
89
|
new_display_name = "#{display_name} #{i += 1}"
|
90
90
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
def change
|
2
|
+
<%=
|
3
|
+
case database_adapter_name
|
4
|
+
when /mysql/i
|
5
|
+
'add_column :users, :display_name, :string, limit: 191'
|
6
|
+
when /sqlite/i
|
7
|
+
<<~'RUBY'
|
8
|
+
add_column :users, :display_name, :string
|
9
|
+
change_column_null :users, :display_name, false
|
10
|
+
RUBY
|
11
|
+
else
|
12
|
+
'add_column :users, :display_name, :string, null: false'
|
13
|
+
end
|
14
|
+
%>
|
15
|
+
DbTextSearch::CaseInsensitive.add_index connection, :users, :display_name,
|
16
|
+
unique: true
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thredded_create_app/tasks/base'
|
4
|
+
module ThreddedCreateApp
|
5
|
+
module Tasks
|
6
|
+
class AddJquery < Base
|
7
|
+
def summary
|
8
|
+
'Add jQuery v3'
|
9
|
+
end
|
10
|
+
|
11
|
+
def before_bundle
|
12
|
+
add_gem 'jquery-rails'
|
13
|
+
end
|
14
|
+
|
15
|
+
def after_bundle
|
16
|
+
if replace 'app/assets/javascripts/application.js',
|
17
|
+
%r{^//= require jquery$},
|
18
|
+
'//= require jquery3',
|
19
|
+
optional: true
|
20
|
+
git_commit 'Use jQuery v3 instead of jQuery v1'
|
21
|
+
else
|
22
|
+
inject_into_file 'app/assets/javascripts/application.js',
|
23
|
+
content: "//= require jquery3\n",
|
24
|
+
before: '//='
|
25
|
+
git_commit 'Add jQuery'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -74,9 +74,11 @@ module ThreddedCreateApp
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def add_admin_column_to_users
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
add_migration 'add_admin_to_users', content: <<~RUBY
|
78
|
+
def change
|
79
|
+
add_column :users, :admin, :boolean, null: false, default: false
|
80
|
+
end
|
81
|
+
RUBY
|
80
82
|
end
|
81
83
|
|
82
84
|
def setup_thredded_emails
|
@@ -13,11 +13,12 @@ module ThreddedCreateApp
|
|
13
13
|
|
14
14
|
attr_reader :app_name, :app_hostname, :app_path, :gems
|
15
15
|
|
16
|
-
def initialize(app_path:, verbose: false, **_args)
|
16
|
+
def initialize(app_path:, verbose: false, database:, **_args)
|
17
17
|
@app_path = app_path
|
18
18
|
@app_name = File.basename(File.expand_path(app_path))
|
19
19
|
@app_hostname = "#{@app_name.tr(' ', '_').downcase}.com"
|
20
20
|
@verbose = verbose
|
21
|
+
@database_adapter_name = database.to_s
|
21
22
|
@gems = []
|
22
23
|
end
|
23
24
|
|
@@ -31,6 +32,8 @@ module ThreddedCreateApp
|
|
31
32
|
|
32
33
|
protected
|
33
34
|
|
35
|
+
attr_reader :database_adapter_name
|
36
|
+
|
34
37
|
def add_gem(gem_name, version: nil, groups: nil, path: nil)
|
35
38
|
log_verbose "+ gem #{gem_name}"
|
36
39
|
@gems << [gem_name, version, groups, path]
|
@@ -60,11 +63,15 @@ module ThreddedCreateApp
|
|
60
63
|
return
|
61
64
|
end
|
62
65
|
src = File.read(expanded_src_path)
|
63
|
-
src =
|
66
|
+
src = eval_template(src) if process_erb
|
64
67
|
FileUtils.mkdir_p(File.dirname(target_path))
|
65
68
|
File.write target_path, src, mode: mode
|
66
69
|
end
|
67
70
|
|
71
|
+
def eval_template(src)
|
72
|
+
ERB.new(src, nil, '-').result(binding)
|
73
|
+
end
|
74
|
+
|
68
75
|
def replace(path, pattern, replacement = nil, optional: false)
|
69
76
|
src = File.read(path)
|
70
77
|
changed = if block_given?
|
@@ -77,6 +84,7 @@ module ThreddedCreateApp
|
|
77
84
|
"No match found for #{pattern} in #{path}"
|
78
85
|
end
|
79
86
|
File.write path, src
|
87
|
+
changed
|
80
88
|
end
|
81
89
|
|
82
90
|
def add_precompile_asset(asset)
|
@@ -104,6 +112,14 @@ module ThreddedCreateApp
|
|
104
112
|
end)
|
105
113
|
end
|
106
114
|
|
115
|
+
def add_migration(name, content: nil, template: nil)
|
116
|
+
run_generator "migration #{name}"
|
117
|
+
replace Dir["db/migrate/*_#{name}.rb"][0],
|
118
|
+
/^ *def change\n *end\n/,
|
119
|
+
indent(2, content ||
|
120
|
+
eval_template(File.read(expand_src_path(template))))
|
121
|
+
end
|
122
|
+
|
107
123
|
def inject_into_file(path, content:, after: nil, before: nil)
|
108
124
|
replace path, (after || before), after ? '\0' + content : content + '\0'
|
109
125
|
end
|
@@ -58,11 +58,6 @@ module ThreddedCreateApp
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def add_javascripts
|
61
|
-
replace 'app/assets/javascripts/application.js',
|
62
|
-
%r{^//= require jquery$},
|
63
|
-
'//= require jquery3'
|
64
|
-
git_commit 'Use jQuery v3 instead of jQuery v1'
|
65
|
-
|
66
61
|
copy 'setup_app_skeleton/javascripts/app.js',
|
67
62
|
'app/assets/javascripts/app.js'
|
68
63
|
copy 'setup_app_skeleton/javascripts/app/',
|
@@ -18,7 +18,10 @@ module ThreddedCreateApp
|
|
18
18
|
log_info 'Creating config/database.yml from template'
|
19
19
|
copy_template 'setup_database/database.yml.erb', 'config/database.yml'
|
20
20
|
create_db_user
|
21
|
-
run 'bundle exec rails db:create db:migrate
|
21
|
+
run 'bundle exec rails db:create db:migrate' \
|
22
|
+
"#{' --quiet' unless verbose?}"
|
23
|
+
# On Rails 5.1, running db:seed together with the commands above fails.
|
24
|
+
run 'bundle exec rails db:seed' \
|
22
25
|
"#{' --quiet' unless verbose?}"
|
23
26
|
git_commit 'Configure the database'
|
24
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thredded_create_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Mazovetskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: term-ansicolor
|
@@ -126,7 +126,8 @@ files:
|
|
126
126
|
- lib/thredded_create_app/logging.rb
|
127
127
|
- lib/thredded_create_app/tasks/add_devise.rb
|
128
128
|
- lib/thredded_create_app/tasks/add_display_name_to_users.rb
|
129
|
-
- lib/thredded_create_app/tasks/add_display_name_to_users/add_display_name_to_users.rb
|
129
|
+
- lib/thredded_create_app/tasks/add_display_name_to_users/add_display_name_to_users.rb.erb
|
130
|
+
- lib/thredded_create_app/tasks/add_jquery.rb
|
130
131
|
- lib/thredded_create_app/tasks/add_memcached_support.rb
|
131
132
|
- lib/thredded_create_app/tasks/add_rails_config.rb
|
132
133
|
- lib/thredded_create_app/tasks/add_rails_email_preview.rb
|
@@ -136,7 +137,6 @@ files:
|
|
136
137
|
- lib/thredded_create_app/tasks/add_thredded.rb
|
137
138
|
- lib/thredded_create_app/tasks/add_thredded/_thredded-custom.scss
|
138
139
|
- lib/thredded_create_app/tasks/add_thredded/_thredded-variables.scss
|
139
|
-
- lib/thredded_create_app/tasks/add_thredded/add_admin_to_users.rb
|
140
140
|
- lib/thredded_create_app/tasks/add_thredded/myapp_thredded.js
|
141
141
|
- lib/thredded_create_app/tasks/add_thredded/spec/features/thredded_spec.rb
|
142
142
|
- lib/thredded_create_app/tasks/add_thredded/thredded.en.yml
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class AddDisplayNameToUsers < ActiveRecord::Migration[5.0]
|
4
|
-
def up
|
5
|
-
case connection.adapter_name.to_s
|
6
|
-
when /mysql/i
|
7
|
-
add_column :users, :display_name, :string, limit: 191
|
8
|
-
when /sqlite/i
|
9
|
-
add_column :users, :display_name, :string
|
10
|
-
change_column_null :users, :display_name, false
|
11
|
-
else
|
12
|
-
add_column :users, :display_name, :string, null: false
|
13
|
-
end
|
14
|
-
|
15
|
-
DbTextSearch::CaseInsensitive.add_index connection, :users, :display_name,
|
16
|
-
unique: true
|
17
|
-
end
|
18
|
-
|
19
|
-
def down
|
20
|
-
remove_column :users, :display_name
|
21
|
-
end
|
22
|
-
end
|