ucb_rails_cli 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd205173084a2b47a7eec534ff1ce614677b8ffc0b24b7097b1fe6221d5f5fb8
4
- data.tar.gz: 037fda75b0e75ea624561adaee8513267c0f7e434c4cbbd8dad573c868e5f772
3
+ metadata.gz: e0103220bf27f390a8b9fce5b8cf6dfe7d59ed9556b711be88516634fe35c599
4
+ data.tar.gz: 8bc8a61fa94110b467e793803db39818044a27b8d47b9d23f2516bce2a2fc14d
5
5
  SHA512:
6
- metadata.gz: 55477d920cfd9eddb2c4d527c4e202a9c71ea5c2a84dc6955e1ff8ca711d6b56b444036a2eb5925ff690f451a82c9a29f980b1bbb8978feb1acfb6a78716d2d7
7
- data.tar.gz: 8e16fb1130a44059317f09006e2b1dde8ce9f96bbdf42c0fe15f3f32ccc89edbb4811ebd9c6c99c1b1e46c0252871a56827f1f5986fbe8809b1ceed46c9ed214
6
+ metadata.gz: 3d1a23f4ffdbf192b5970fec3be34617f6017859974153ad7a269062337c52fba0fd422928c7aa4707bde7ed42d93e8198fb3443d3b2e18f2c2d1d598601ac22
7
+ data.tar.gz: e298b4378a62dca4659401765505eb4b480aa7bd0f6735c9414fed6eac97cba633dcc8bd6a2002dd18bdbe57e6e31eb8dac280cd72beffeb952223f4647787a1
@@ -2,8 +2,13 @@ require "thor"
2
2
 
3
3
  module UcbRailsCli
4
4
  class Cli < Thor
5
+ MASTER_KEY_PATH = File.expand_path("~/.ucb_rails_master_key")
6
+
5
7
  ## error messages
6
8
  INSTALL_RAILS = "Unable to find rails - please make sure you've installed Rails 5.1 or greater"
9
+ VERIFY_KEY = "Unable to find the master key for encrypted credentials\n" +
10
+ "in #{MASTER_KEY_PATH} or the RAILS_MASTER_KEY environment variable.\n" +
11
+ "Please set the master key in one of these two places before proceeding."
7
12
  GEMFILE_ERROR = "Unable to add new gems to Gemfile - check the console output for more info"
8
13
  LAYOUT_FILES = "Unable to copy view templates - check the console output for more info"
9
14
  HELPER_FILES = "Unable to copy helpers - check the console output for more info"
@@ -12,7 +17,6 @@ module UcbRailsCli
12
17
  MIGRATIONS = "Unable to copy migrations from ucb_rails_user gem - check the console output for more info"
13
18
  CONTROLLERS = "Unable to copy controllers - check the console output for more info"
14
19
  CONFIG_FILES = "Unable to copy config files - check the console output for more info"
15
- GITIGNORE = "Unable to update .gitignore - check the console output for more info"
16
20
  RSPEC = "Unable to install RSpec - check the console output for more info"
17
21
 
18
22
  desc 'version', 'Display version'
@@ -28,6 +32,8 @@ module UcbRailsCli
28
32
 
29
33
  verify_rails or exit_with_error(INSTALL_RAILS)
30
34
 
35
+ verify_master_key or exit_with_error(VERIFY_KEY)
36
+
31
37
  create_rails_app(app_name) or exit_with_error
32
38
 
33
39
  add_to_gemfile(app_name) or exit_with_error(GEMFILE_ERROR)
@@ -44,8 +50,6 @@ module UcbRailsCli
44
50
 
45
51
  add_config_files(app_name) or exit_with_error(CONFIG_FILES)
46
52
 
47
- update_gitignore(app_name) or exit_with_error(GITIGNORE)
48
-
49
53
  install_migrations(app_name) or exit_with_error(MIGRATIONS)
50
54
 
51
55
  setup_rspec(app_name) or exit_with_error(RSPEC)
@@ -61,10 +65,7 @@ From here, you should set up the database:
61
65
  bin/rake db:create
62
66
  bin/rake db:migrate
63
67
 
64
- then add the missing values in config/config.yml - you can get the
65
- credentials from another developer.
66
-
67
- At that point, you can start the server as usual:
68
+ then start the server as usual:
68
69
 
69
70
  bin/rails server
70
71
 
@@ -91,6 +92,10 @@ Enjoy!
91
92
  end
92
93
  end
93
94
 
95
+ def verify_master_key
96
+ ENV["RAILS_MASTER_KEY"].to_s.length > 0 || FileTest.file?(MASTER_KEY_PATH)
97
+ end
98
+
94
99
  def create_rails_app(app_name)
95
100
  result = system("rails new #{app_name} #{options[:rails_options]}")
96
101
  return true if result
@@ -101,7 +106,6 @@ Enjoy!
101
106
  end
102
107
 
103
108
  def add_to_gemfile(app_name)
104
- puts "Adding gems to Gemfile..."
105
109
  if system("cat #{template_dir}/Gemfile_additions >> #{app_name}/Gemfile")
106
110
  puts "Installing new gems..."
107
111
  system "cd #{app_name} && bundle install"
@@ -152,18 +156,35 @@ Enjoy!
152
156
 
153
157
  def add_config_files(app_name)
154
158
  puts "Installing config files..."
155
- system("cp #{template_dir}/config/config.yml #{app_name}/config") &&
156
- system("cp #{template_dir}/config/initializers/ucb_rails_user.rb #{app_name}/config/initializers")
157
- end
158
-
159
- def update_gitignore(app_name)
160
- puts "Updating .gitignore..."
161
- system "echo 'config/config.yml' >> #{app_name}/.gitignore"
159
+ system("cp #{template_dir}/config/initializers/ucb_rails_user.rb #{app_name}/config/initializers")
160
+ system("cp #{template_dir}/config/credentials.yml.enc #{app_name}/config/")
161
+
162
+ # add exeception_notification config to production.rb config
163
+ prod_config_addition = <<-END_CONFIG
164
+
165
+ config.middleware.use ExceptionNotification::Rack,
166
+ email: {
167
+ email_prefix: "[#{app_name}] ",
168
+ sender_address: %{"notifier" <notifier@example.com>},
169
+ exception_recipients: %w{ucb-ist-developers@berkeley.edu}
170
+ }
171
+ end
172
+ END_CONFIG
173
+ prod_config_contents =
174
+ `cat #{app_name}/config/environments/production.rb`
175
+ .gsub(/end\s\Z/, prod_config_addition)
176
+ system "echo '#{prod_config_contents}' > #{app_name}/config/environments/production.rb"
177
+
178
+ # move master key, unless in ENV
179
+ unless ENV["MASTER_KEY_PATH"].to_s.length > 0
180
+ system "cp ~/.ucb_rails_master_key #{app_name}/config/master.key"
181
+ end
162
182
  end
163
183
 
164
184
  def install_migrations(app_name)
165
185
  puts "Installing migrations from ucb_rails_user..."
166
- system "cd #{app_name} && bin/rails railties:install:migrations"
186
+ system "cd #{app_name} && bundle install"
187
+ system "cd #{app_name} && bundle exec rails railties:install:migrations"
167
188
  end
168
189
 
169
190
  def setup_rspec(app_name)
@@ -6,6 +6,7 @@ gem "better_errors"
6
6
  gem "binding_of_caller"
7
7
  gem "ucb_rails_user", "~> 1.0"
8
8
  gem "rails_view_helpers", github: "ucb-ist-eas/rails_view_helpers", branch: "rails5"
9
+ gem "exception_notification"
9
10
 
10
11
  group :development, :test do
11
12
  gem 'rspec-rails', '~> 3.5'
@@ -0,0 +1 @@
1
+ 5aYApt8O3JvcZLz7Ks7YBiyR1ByfGjQpMI75JSCj6YwkNDSFFkBlpTFyMa0ZIVzulckt2PTcatdvMf091gHQPEPhp+ak42wx3fJfOKS4ENfqWUjWdSTlvho4p8sTK74prBTZbXm2ZnxJtRsiqsW4JCgSauFWIdLK1l7paSWJxd+5+LEsgQ+UGucILgSx+XyTed30ia5GTjf9sfSbgReafsNzT7vugAS40dO+FA/klrG+GylkN9RU45CUikKYq+1UAnLSXB6E7ap9yAR2CPTUO8g8XQVry2Kre93mN6GhNrUQJdGElUR1d86Dm7q6pe2E8HZMeMiHFKQv8x/KEYnsfR1XSo1XBbGnEEAl9cTL+eZxDX0wsd2gdwc4R4l4yKCZsnnBjjfBj+viRf46cj9f9Jgf1LtJWDOxHteqSjF2Dkr++taWhyq0CtqVpbuTocgnxkunAlztEnCjY/mPd7whYbbAA5LotrxSbEXX748EpkzkHvzSbNGhamOtOxGe3bS44E5FYY3iCOYHJ9JVgCu9OqxBFbHyEni/a2ZZl4pPFnmthWK4ttd6wt+BpDBy51X8sI7qV98j1WtAlJgi+0l3/uNKKh6EypzLjbfwVo/AJ8GXJm102thes07dbXrSSK0bIANW4QHCOarkEHLe8XPI02FDvSgX73Azpyx//HFRuK5R/1YMAM7aH+cSk7EmChJJKsmM/obP/8iOg47undL68PtXBr95zLf6QaGVLU0P10hs44b0AWbsU6t37MAxBbYTGRomZvnYxQiBwWR3t9OM8cJfBWmLd25I1kzQsSjErOKSydbLnMuajuBNHxS+oUUI7eQv9CrZ3D61TMEnYxqG3mMVzDbl4E40rjFLHM9rDJPP6o7nW0rtpe8vuLvgBOwt6JVSwOjayjaEycHDJ4065QqcPmP4pdGZqol1+PozrnQB+n9MJsVo2HthZ/WSRgWqpWeEE+jJFtV7Gv6OXOZOzRFpVBW0K72X6CB9g3QeYE8fBsPpku+eAQkjJ8RURBbSardogyYuL+qd2ebQyOsOgb8j--L1pojtO3q6FJMDIz--xTFJPtWOpOvLygaaSKjX2g==
@@ -1,14 +1,14 @@
1
1
  ############################################################
2
- # Load configuration from config/config.yml
2
+ # Load configuration from config/credentials.yml.enc
3
3
  ############################################################
4
4
 
5
- config = UcbRailsUser::Configuration::Configuration.new
5
+ credentials = Rails.application.credentials
6
6
 
7
7
  ############################################################
8
8
  # ActionMailer
9
9
  ############################################################
10
10
 
11
- #UcbRails::Configuration::Email.configure(config.for('email'))
11
+ UcbRailsUser::Configuration::Email.configure(credentials.email&.with_indifferent_access())
12
12
 
13
13
  ############################################################
14
14
  # Exception Notification
@@ -20,13 +20,13 @@ config = UcbRailsUser::Configuration::Configuration.new
20
20
  # UCB::LDAP
21
21
  ############################################################
22
22
 
23
- UcbRailsUser::Configuration::Ldap.configure(config.for('ldap'))
23
+ UcbRailsUser::Configuration::Ldap.configure(credentials.ldap&.with_indifferent_access())
24
24
 
25
25
  ############################################################
26
26
  # OmniAuth
27
27
  ############################################################
28
28
 
29
- UcbRailsUser::Configuration::Cas.configure(config.for('cas'))
29
+ UcbRailsUser::Configuration::Cas.configure(credentials.cas&.with_indifferent_access())
30
30
 
31
31
  ############################################################
32
32
  # UcbRails
@@ -11,7 +11,7 @@
11
11
  %link{:rel => "stylesheet", :href => "https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css", :integrity => "sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B", :crossorigin => "anonymous"}
12
12
  %link{:rel => "stylesheet", :href => "https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" }
13
13
  %link{:rel => "stylesheet", :href => "https://jqueryui.com/resources/demos/style.css" }
14
- %link{:rel => "icon", :type => "image/ico", :href => "/assets/favicon.ico" }
14
+ = favicon_link_tag
15
15
 
16
16
  = stylesheet_link_tag "application", :media => "all", "data-turbolinks-track" => false
17
17
 
@@ -1,3 +1,3 @@
1
1
  module UcbRailsCli
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucb_rails_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darin Wilson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-11 00:00:00.000000000 Z
11
+ date: 2018-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -90,12 +90,13 @@ files:
90
90
  - lib/ucb_rails_cli.rb
91
91
  - lib/ucb_rails_cli/cli.rb
92
92
  - lib/ucb_rails_cli/templates/Gemfile_additions
93
- - lib/ucb_rails_cli/templates/config/config.yml
93
+ - lib/ucb_rails_cli/templates/config/credentials.yml.enc
94
94
  - lib/ucb_rails_cli/templates/config/initializers/ucb_rails_user.rb
95
95
  - lib/ucb_rails_cli/templates/config/routes.rb
96
96
  - lib/ucb_rails_cli/templates/controllers/application_controller.rb
97
97
  - lib/ucb_rails_cli/templates/helpers/application_helper.rb
98
98
  - lib/ucb_rails_cli/templates/images/.keep
99
+ - lib/ucb_rails_cli/templates/images/favicon.ico
99
100
  - lib/ucb_rails_cli/templates/images/logo-ucberkeley-white.png
100
101
  - lib/ucb_rails_cli/templates/javascripts/application.js
101
102
  - lib/ucb_rails_cli/templates/stylesheets/application.css
@@ -1,69 +0,0 @@
1
- # You can have configuration per-environment by nesting under the
2
- # environment key, or have a top level.
3
-
4
- ldap:
5
- host: "nds.berkeley.edu"
6
- username:
7
- password:
8
-
9
- development:
10
-
11
- # Default behavior will do the right thing. Only set if you want
12
- # non-standard behavior.
13
- # cas:
14
- # host: 'auth.berkeley.edu'
15
- # host: 'auth-test.berkeley.edu'
16
-
17
- # email:
18
- # default:
19
- # from: user@gmail.com
20
- # default_url_options:
21
- # host: example.com
22
- # delivery_method: :smtp
23
- # # delivery_method: :sendmail
24
- # # delivery_method: :test
25
- # # delivery_method: :file
26
- # raise_delivery_errors: true
27
- # # send_mail_settings:
28
- # # location: "/usr/sbin/sendmail"
29
- # # arguments: "-i -t"
30
- # smtp_settings:
31
- # address: smtp.gmail.com
32
- # port: 587
33
- # domain: gmail.com
34
- # user_name: <username>
35
- # password: <password>
36
- # authentication: plain
37
- # enable_starttls_auto: true
38
- # subject_prefix: '[My App {env}] '
39
-
40
- # exception_notification:
41
- # email:
42
- # email_prefix: '[My App - Error {env}] '
43
- # sender_address: user@example.com
44
- # exception_recipients:
45
- # - user1@example.com
46
- # - user2@example.com
47
-
48
- # Default behavior will select the correct host. No need to set anything if
49
- # you aren't specifying username/password.
50
- # ldap:
51
- # host: 'nds.berkeley.edu'
52
- # host: 'nds-test.berkeley.edu'
53
- # username: <username>
54
- # password: <password>
55
- # # by default test entries returned in all but PROD
56
- # include_test_entries: true
57
- # include_test_entries: false
58
-
59
-
60
- test:
61
- email:
62
- default:
63
- from: test-user@examle.com
64
- default_url_options:
65
- host: example.com
66
- delivery_method: :test
67
- raise_delivery_errors: true
68
- subject_prefix: '[My App {env}] '
69
-