thredded_create_app 0.1.23 → 0.1.24

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: c12dd584a928b7cc88c5bbbf4c043dcef538409afbb9436c24d5eb5b02763cf1
4
- data.tar.gz: 8d3247f7baffe0d92c9f1647fe3547195b207954bafaf493d55c9fbf7f4c0ae7
3
+ metadata.gz: f18869fd3be69b970328dea05718efa3e89da02c61692b8b76fe8cb3f65ef9b4
4
+ data.tar.gz: 6a36d2746531f37b7e4f33fc99118cd6661b429e218a7cdd1218cc44461c43c6
5
5
  SHA512:
6
- metadata.gz: e87c69ec96e1786b6d3245812770d4a21e2f4f5e01cd6ca2993aeb38d8e3c9907d9889a442dda49f6c593eb16816e2baa7572c48442a861e2982ca43dd3d0cd9
7
- data.tar.gz: eb04d5227750e269ee78047189e6eef3907b2fe4c14b63836f28e5f8a3762e84081f028016f823262e171d4ba81d56a53fb95450ca5850f36b673331df7e38a6
6
+ metadata.gz: 836abf0e71ec67aab2ab51b9859f3670bb1a8f51145e78743e8c15c734a5e53f0fc9c7abaef2872c36b716a370d1a580c4c2139146e0e5284818a38b918acb12
7
+ data.tar.gz: 1962f34cd78eef86a40cf7cc044808150675ba849068208ca08c8e106f4eeec0ca1a2015c1ba01ddf16d1a950235f743d64626aea12241559c9331896ab92874
@@ -60,7 +60,7 @@ module ThreddedCreateApp
60
60
  log_stderr Rainbow(<<~TEXT).green.bright
61
61
  All done! 🌟
62
62
  TEXT
63
- generator.run_tests!
63
+ generator.run_tests! unless ENV['SKIP_TESTS']
64
64
  start_app_server!(options[:app_path]) if options[:start_server]
65
65
  end
66
66
 
@@ -84,24 +84,39 @@ module ThreddedCreateApp
84
84
  end
85
85
 
86
86
  # @final
87
- def bundle # rubocop:disable Metrics/AbcSize
87
+ def bundle
88
88
  gemfile_contents = File.read('Gemfile')
89
89
  gems_to_add = gems.reject do |gem|
90
90
  gemfile_contents =~ /^gem\s*['"]#{Regexp.escape(gem[0])}['"]/
91
91
  end
92
+ log_info 'Writing gems to Gemfile'
93
+ add_gems_to_gemfile gems_to_add
94
+ log_info 'Installing gems'
95
+ install_gems
96
+ git_commit "Add gems: #{gems_to_add.map { |(name, *)| name } * ', '}"
97
+ end
98
+
99
+ def add_gems_to_gemfile(gems)
92
100
  File.open('Gemfile', 'a') do |f|
93
- log_info 'Writing gems to Gemfile'
94
- gems_to_add.each do |(name, version, groups, path)|
101
+ gems.each do |(name, version, groups, path)|
95
102
  f.puts ["gem '#{name}'",
96
103
  (version if version),
97
104
  ("groups: %i(#{groups * ' '})" if groups),
98
105
  ("path: '#{path}'" if path)].compact.join(', ')
99
106
  end
100
107
  end
101
- log_info 'Installing gems'
102
- run "bundle install#{' --quiet' unless verbose?}" \
103
- "#{' --path .bundle' unless File.writable?(Gem.dir)}"
104
- git_commit "Add gems: #{gems_to_add.map { |(name, *)| name } * ', '}"
108
+ end
109
+
110
+ def install_gems
111
+ cache_path = ENV['THREDDED_CREATE_APP_BUNDLE_CACHE']
112
+ if cache_path
113
+ FileUtils.mkdir_p cache_path
114
+ run 'ln', '-s', cache_path, 'vendor/cache'
115
+ end
116
+ run 'bundle', 'install',
117
+ *('--quiet' unless verbose?),
118
+ *(%w[--path .bundle] unless File.writable?(Gem.dir))
119
+ run 'bundle', 'package', *('--quiet' unless verbose?) if cache_path
105
120
  end
106
121
  end
107
122
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Users
4
+ class SessionsController < ::Devise::SessionsController
5
+ attr_accessor :response_options
6
+
7
+ protected
8
+
9
+ def sign_in_params
10
+ super.reverse_merge(remember_me: true)
11
+ end
12
+
13
+ def serialize_options(resource)
14
+ super.merge!(response_options || {})
15
+ end
16
+ end
17
+ end
@@ -19,6 +19,8 @@ module ThreddedCreateApp
19
19
  ':password, :password_confirmation'
20
20
  run_generator 'devise:install'
21
21
  run_generator 'devise User'
22
+ fix_migration_indices_limit_on_mysql
23
+ setup_controllers
22
24
  setup_views
23
25
  setup_emails
24
26
  setup_after_sign_in_behaviour
@@ -53,20 +55,49 @@ module ThreddedCreateApp
53
55
  RUBY
54
56
  end
55
57
 
58
+ def fix_migration_indices_limit_on_mysql
59
+ return unless database_adapter_name =~ /mysql|maria/i
60
+ migration_file = Dir['db/migrate/*_devise_create_users.rb'][0]
61
+ replace migration_file,
62
+ /add_index :users, :(?:email|\w+_token), +unique: true/,
63
+ '\0, length: 191',
64
+ global: true
65
+ end
66
+
67
+ def setup_controllers
68
+ copy 'add_devise/sessions_controller.rb',
69
+ 'app/controllers/users/sessions_controller.rb'
70
+ replace 'config/routes.rb',
71
+ 'devise_for :users',
72
+ <<~'RUBY'.chomp
73
+ devise_for :users,
74
+ skip: %i[sessions],
75
+ controllers: {
76
+ sessions: 'users/sessions',
77
+ },
78
+ path_names: { sign_up: 'register' }
79
+ devise_scope :user do
80
+ get 'sign-in', to: 'users/sessions#new', as: :new_user_session
81
+ post 'sign-in', to: 'users/sessions#create', as: :user_session
82
+ match 'sign-out', to: 'users/sessions#destroy', as: :destroy_user_session,
83
+ via: Devise.mappings[:user].sign_out_via
84
+ end
85
+ RUBY
86
+ end
87
+
56
88
  def setup_views
57
- run_generator 'devise:i18n:views -v sessions registrations'
89
+ # Generate all devise views that have forms, so that they use the
90
+ # app form template (e.g. simple_form).
91
+ run_generator 'devise:i18n:views -v confirmations passwords' \
92
+ ' registrations sessions unlocks'
58
93
  # Replace the back link with the correct URL
59
94
  replace 'app/views/devise/registrations/edit.html.erb',
60
95
  ', :back %>', ', back_url %>'
61
- # Make the views render-able outside Devise controllers
62
- %w[app/views/devise/sessions/new.html.erb
63
- app/views/devise/shared/_links.html.erb].each do |path|
64
- replace path, 'resource_class', 'User', optional: true, global: true
65
- replace path, /resource_name(?!:)/, ':user', global: true
66
- replace path, /resource(?!:)/, ':user', optional: true, global: true
67
- replace path, 'devise_mapping', 'Devise.mappings[:user]',
68
- optional: true, global: true
69
- end
96
+ # Remove "Password confirmation" from sign up.
97
+ # See https://github.com/plataformatec/devise/wiki/Disable-password-confirmation-during-registration
98
+ replace 'app/views/devise/registrations/new.html.erb',
99
+ " <%= f.input :password_confirmation, required: true %>\n",
100
+ ''
70
101
  end
71
102
 
72
103
  def setup_emails
@@ -4,7 +4,12 @@ Rails.application.config.to_prepare do
4
4
  Thredded::ApplicationController.module_eval do
5
5
  rescue_from Thredded::Errors::LoginRequired do |exception|
6
6
  flash.now[:notice] = exception.message
7
- render template: 'devise/sessions/new', status: :forbidden
7
+ controller = Users::SessionsController.new
8
+ controller.request = request
9
+ controller.request.env['devise.mapping'] = Devise.mappings[:user]
10
+ controller.response = response
11
+ controller.response_options = { status: :forbidden }
12
+ controller.process(:new)
8
13
  end
9
14
  end
10
15
  end
@@ -9,7 +9,8 @@ module ThreddedCreateApp
9
9
  end
10
10
 
11
11
  def before_bundle
12
- add_gem 'thredded'
12
+ add_gem 'thredded',
13
+ **(ENV['LOCAL_THREDDED'] ? { path: ENV['LOCAL_THREDDED'] } : {})
13
14
  end
14
15
 
15
16
  def after_bundle # rubocop:disable Metrics/AbcSize
@@ -16,7 +16,7 @@ RSpec.describe UsersController, type: :controller do
16
16
  it 'returns http success' do
17
17
  user = User.create(valid_attributes)
18
18
  get :show, params: { id: user.id }
19
- expect(response).to have_http_status(:success)
19
+ expect(response).to be_successful
20
20
  end
21
21
  end
22
22
  end
@@ -20,6 +20,12 @@
20
20
  <li><%= t 'thredded.users.posts_count', count: user_detail.posts_count %></li>
21
21
  <% end %>
22
22
  </ul>
23
+ <% if current_user && current_user != user %>
24
+ <a class="thredded--link"
25
+ href="<%= Thredded::UrlsHelper.send_private_message_path(current_user: current_user, to: user) %>">
26
+ <%= t 'thredded.users.send_private_message' %>
27
+ </a>
28
+ <% end %>
23
29
  <% posts_page = Thredded.posts_page_view(
24
30
  scope: user.thredded_posts.order_newest_first.limit(5),
25
31
  current_user: current_user) %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ThreddedCreateApp
4
- VERSION = '0.1.23'
4
+ VERSION = '0.1.24'
5
5
  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.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Mazovetskiy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
11
+ date: 2018-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -131,6 +131,7 @@ files:
131
131
  - lib/thredded_create_app/generator.rb
132
132
  - lib/thredded_create_app/logging.rb
133
133
  - lib/thredded_create_app/tasks/add_devise.rb
134
+ - lib/thredded_create_app/tasks/add_devise/sessions_controller.rb
134
135
  - lib/thredded_create_app/tasks/add_devise/spec/features/devise_spec.rb
135
136
  - lib/thredded_create_app/tasks/add_display_name_to_users.rb
136
137
  - lib/thredded_create_app/tasks/add_display_name_to_users/add_display_name_to_users.rb.erb
@@ -212,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
213
  version: '0'
213
214
  requirements: []
214
215
  rubyforge_project:
215
- rubygems_version: 2.7.6
216
+ rubygems_version: 2.7.7
216
217
  signing_key:
217
218
  specification_version: 4
218
219
  summary: Rails app generator for Thredded.