thredded_create_app 0.1.23 → 0.1.24

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: 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.