locomotivecms 3.0.0.rc3 → 3.0.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -3
- data/README.md +1 -1
- data/app/assets/stylesheets/locomotive/unauthorized/_public.scss +7 -4
- data/app/controllers/locomotive/errors_controller.rb +4 -0
- data/app/helpers/locomotive/errors_helper.rb +2 -4
- data/app/models/locomotive/concerns/content_entry/csv.rb +4 -0
- data/app/models/locomotive/concerns/content_entry/slug.rb +0 -2
- data/app/models/locomotive/concerns/content_type/sync.rb +2 -2
- data/app/models/locomotive/concerns/page/templatized.rb +1 -1
- data/app/models/locomotive/concerns/site/access_points.rb +3 -3
- data/app/models/locomotive/theme_asset.rb +0 -1
- data/app/views/locomotive/developers_documentation/_wagon.html.slim +2 -2
- data/app/views/locomotive/devise_mailer/reset_password_instructions.html.slim +1 -0
- data/app/views/locomotive/errors/no_site.json +1 -0
- data/app/views/locomotive/shared/_sidebar.html.slim +1 -1
- data/app/views/locomotive/shared/_sidebar_without_site.html.slim +1 -1
- data/app/views/locomotive/shared/header/_account_menu.html.slim +2 -2
- data/config/locales/en.yml +1 -1
- data/config/routes.rb +4 -2
- data/lib/generators/locomotive/install/install_generator.rb +9 -9
- data/lib/generators/locomotive/install/templates/carrierwave.rb +23 -12
- data/lib/generators/locomotive/install/templates/carrierwave_aws.rb +36 -0
- data/lib/generators/locomotive/install/templates/mongoid.yml +97 -35
- data/lib/locomotive/dependencies.rb +1 -1
- data/lib/locomotive/middlewares/site.rb +10 -4
- data/lib/locomotive/mongoid/patches.rb +1 -1
- data/lib/locomotive/steam_adaptor.rb +6 -4
- data/lib/locomotive/version.rb +1 -1
- data/spec/dummy/config/application.rb +0 -3
- data/spec/dummy/config/initializers/devise.rb +128 -58
- data/spec/dummy/config/mongoid.yml +95 -78
- data/spec/models/locomotive/content_entry_spec.rb +6 -6
- data/spec/requests/locomotive/steam/cache_spec.rb +1 -1
- data/spec/requests/site_spec.rb +25 -0
- data/spec/support/mongoid.rb +2 -0
- metadata +16 -189
- data/features/api/accounts.feature +0 -43
- data/features/api/authentication.feature +0 -41
- data/features/api/authorization/accounts.feature +0 -165
- data/features/api/authorization/content_assets.feature +0 -147
- data/features/api/authorization/content_entries.feature +0 -202
- data/features/api/authorization/content_types.feature +0 -237
- data/features/api/authorization/current_site.feature +0 -30
- data/features/api/authorization/memberships.feature +0 -225
- data/features/api/authorization/pages.feature +0 -189
- data/features/api/authorization/sites.feature +0 -212
- data/features/api/authorization/snippets.feature +0 -179
- data/features/api/authorization/theme_assets.feature +0 -185
- data/features/api/authorization/translations.feature +0 -253
- data/features/api/content_entries.feature +0 -184
- data/features/api/content_types.feature +0 -156
- data/features/api/editable_elements.feature +0 -190
- data/features/api/entries_custom_fields.feature +0 -150
- data/features/api/memberships.feature +0 -26
- data/features/api/pages.feature +0 -72
- data/features/backoffice/authorization/account_settings.feature +0 -28
- data/features/backoffice/authorization/content_type.feature +0 -35
- data/features/backoffice/authorization/current_site.feature +0 -53
- data/features/backoffice/authorization/inline_front_end_editing.feature +0 -46
- data/features/backoffice/authorization/pages.feature +0 -95
- data/features/backoffice/authorization/theme_assets.feature +0 -50
- data/features/backoffice/content_types/edit.feature +0 -20
- data/features/backoffice/content_types/email.feature +0 -26
- data/features/backoffice/content_types/has_many.feature +0 -80
- data/features/backoffice/content_types/integer.feature +0 -26
- data/features/backoffice/content_types/localized.feature +0 -63
- data/features/backoffice/content_types/many_to_many.feature +0 -70
- data/features/backoffice/content_types/tags.feature +0 -22
- data/features/backoffice/content_types/uniqueness.feature +0 -29
- data/features/backoffice/contents.feature +0 -93
- data/features/backoffice/editable_elements.feature +0 -22
- data/features/backoffice/installation.feature +0 -33
- data/features/backoffice/login.feature +0 -33
- data/features/backoffice/mounting.feature +0 -13
- data/features/backoffice/my_account.feature +0 -22
- data/features/backoffice/pages.feature +0 -73
- data/features/backoffice/regressions.feature +0 -19
- data/features/backoffice/site.feature +0 -71
- data/features/backoffice/snippets.feature +0 -39
- data/features/backoffice/theme_assets.feature +0 -72
- data/features/backoffice/translations.feature +0 -50
- data/features/public/basic.feature +0 -30
- data/features/public/contact_form.feature +0 -98
- data/features/public/content_entries.feature +0 -69
- data/features/public/editable_elements.feature +0 -138
- data/features/public/has_many.feature +0 -8
- data/features/public/inheritance.feature +0 -157
- data/features/public/inline_front_end_editing.feature +0 -26
- data/features/public/many_to_many.feature +0 -64
- data/features/public/new_contact_form.feature +0 -95
- data/features/public/pages.feature +0 -116
- data/features/public/pagination.feature +0 -8
- data/features/public/robots.feature +0 -22
- data/features/public/session.feature +0 -40
- data/features/public/sitemap.feature +0 -74
- data/features/public/snippets.feature +0 -21
- data/features/public/tablerow.feature +0 -42
- data/features/public/tags.feature +0 -45
- data/features/step_definitions/api_steps.rb +0 -179
- data/features/step_definitions/backoffice/mounting_steps.rb +0 -22
- data/features/step_definitions/backoffice_steps.rb +0 -47
- data/features/step_definitions/content_assets_steps.rb +0 -12
- data/features/step_definitions/content_types_steps.rb +0 -135
- data/features/step_definitions/current_site_steps.rb +0 -43
- data/features/step_definitions/editable_elements_steps.rb +0 -24
- data/features/step_definitions/membership_steps.rb +0 -19
- data/features/step_definitions/more_web_steps.rb +0 -131
- data/features/step_definitions/page_steps.rb +0 -133
- data/features/step_definitions/pagination_steps.rb +0 -35
- data/features/step_definitions/pickle_steps.rb +0 -100
- data/features/step_definitions/relationships_steps.rb +0 -110
- data/features/step_definitions/site_steps.rb +0 -111
- data/features/step_definitions/snippet_steps.rb +0 -37
- data/features/step_definitions/theme_asset_steps.rb +0 -64
- data/features/step_definitions/translation_steps.rb +0 -7
- data/features/step_definitions/web_steps.rb +0 -225
- data/features/step_definitions/within_steps.rb +0 -14
- data/features/support/cleaner.rb +0 -4
- data/features/support/env.rb +0 -82
- data/features/support/factory_girl.rb +0 -2
- data/features/support/http.rb +0 -22
- data/features/support/locales.rb +0 -5
- data/features/support/paths.rb +0 -62
- data/features/support/pickle.rb +0 -24
- data/features/support/selectors.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b022aa4b532f3b4ab72f8e7218af9f6eb77f834
|
4
|
+
data.tar.gz: 7fa421098346655a1eb58290defc5ffe2d2b1e0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4dcd634a7df28ca685eb12c1cd2634d259db84a82a77336bd0abcc600d3e91e685129701ff10503367069c36aa3f2e3cb616bfd0b2f9174fcc11ef18ffb17f8d
|
7
|
+
data.tar.gz: 514754acae872d4b2ea2c0721990885136f0ba305d4e42b84ad0721ff289d0d4ae9d781b0ddff9053ac97d86553c2d1bcd914b4cebca1f72462e2723bfccf963
|
data/Gemfile
CHANGED
@@ -19,10 +19,10 @@ end
|
|
19
19
|
group :development do
|
20
20
|
# gem 'custom_fields', path: '../custom_fields'
|
21
21
|
# gem 'custom_fields', path: '../gems/custom_fields' # for Developers
|
22
|
-
# gem 'custom_fields', github: 'locomotivecms/custom_fields', ref: '
|
22
|
+
# gem 'custom_fields', github: 'locomotivecms/custom_fields', ref: '279c6744eb6b7dd'
|
23
23
|
|
24
24
|
# gem 'locomotivecms_steam', path: '../gems/steam', require: false
|
25
|
-
# gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: '
|
25
|
+
# gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: 'b4aa09a', require: false
|
26
26
|
|
27
27
|
# gem 'locomotive_liquid', path: '../gems/liquid' # for Developers
|
28
28
|
# gem 'locomotivecms_solid', path: '../gems/solid' # for Developers
|
@@ -64,7 +64,7 @@ group :test do
|
|
64
64
|
gem 'factory_girl_rails'
|
65
65
|
gem 'pickle'
|
66
66
|
gem 'json_spec', '~> 1.1.4'
|
67
|
-
gem 'database_cleaner', '
|
67
|
+
gem 'database_cleaner', git: 'https://github.com/DatabaseCleaner/database_cleaner.git'
|
68
68
|
gem 'timecop', '~> 0.7.1'
|
69
69
|
|
70
70
|
gem 'email_spec'
|
data/README.md
CHANGED
@@ -44,7 +44,7 @@ Here is a list of the main gems used to power the Locomotive platform:
|
|
44
44
|
|
45
45
|
- Rails 4.2 - *web framework*
|
46
46
|
- Bootstrap - *UI framework*
|
47
|
-
- Mongoid
|
47
|
+
- Mongoid 5 - *Object-Document-Mapper for MongoDB 2/3*
|
48
48
|
- Devise 3.4 - *Authentication*
|
49
49
|
- Carrierwave - *Upload*
|
50
50
|
- Pundit - *Permissions*
|
@@ -16,24 +16,26 @@
|
|
16
16
|
}
|
17
17
|
|
18
18
|
// Centers the content of a public page.
|
19
|
+
|
19
20
|
.public-container {
|
20
|
-
height: 100%;
|
21
21
|
width: 100%;
|
22
|
+
height: 100%;
|
22
23
|
text-align: center;
|
23
24
|
animation: fade-down 1s ease-out;
|
24
25
|
&:before {
|
25
|
-
content: ' ';
|
26
26
|
display: inline-block;
|
27
|
-
vertical-align: middle;
|
28
27
|
height: 100%;
|
28
|
+
vertical-align: middle;
|
29
|
+
content: " ";
|
29
30
|
}
|
30
31
|
}
|
31
32
|
|
32
33
|
// Wraps and centers all content of the public forms.
|
33
34
|
|
34
35
|
.public-form-wrapper {
|
35
|
-
width: 480px;
|
36
36
|
display: inline-block;
|
37
|
+
width: 480px;
|
38
|
+
margin: 25px 0;
|
37
39
|
vertical-align: middle;
|
38
40
|
}
|
39
41
|
|
@@ -119,6 +121,7 @@
|
|
119
121
|
@media (max-width: $screen-xs-min) {
|
120
122
|
.public-form-wrapper {
|
121
123
|
left: 0;
|
124
|
+
width: 99%;
|
122
125
|
padding: 20px 10px;
|
123
126
|
margin-left: 0;
|
124
127
|
}
|
@@ -8,12 +8,10 @@ module Locomotive
|
|
8
8
|
def no_site_message_and_link
|
9
9
|
options = Locomotive.config.host ? { host: Locomotive.config.host } : { only_path: true }
|
10
10
|
|
11
|
-
if
|
12
|
-
[no_site_message(:create_account), sign_up_url(options)]
|
13
|
-
elsif current_locomotive_account
|
11
|
+
if current_locomotive_account
|
14
12
|
[no_site_message(:add_domain), sites_url(options)]
|
15
13
|
else
|
16
|
-
[no_site_message(:sign_in),
|
14
|
+
[no_site_message(:sign_in), sign_in_url(options)]
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -56,6 +56,10 @@ module Locomotive
|
|
56
56
|
# @return [ String ] The well-generated CSV document
|
57
57
|
#
|
58
58
|
def to_csv(options = {})
|
59
|
+
# puts "to_csv #{all.count.inspect} / #{all.first.inspect}"
|
60
|
+
# puts "#{all.first.content_type_id.inspect}"
|
61
|
+
# puts "#{all.first.content_type.inspect}"
|
62
|
+
# binding.pry
|
59
63
|
content_type = options.delete(:content_type) || all.first.try(:content_type)
|
60
64
|
csv_options = options.select do |k, v|
|
61
65
|
CSV::DEFAULT_OPTIONS.keys.include?(k.to_sym)
|
@@ -60,11 +60,11 @@ module Locomotive
|
|
60
60
|
|
61
61
|
operations['$set']['entries_custom_fields_version'] = content_type.entries_custom_fields_version
|
62
62
|
|
63
|
-
self.collection.find(_id: content_type._id).
|
63
|
+
self.collection.find(_id: content_type._id).update_one(operations)
|
64
64
|
|
65
65
|
collection, selector = content_type.entries.collection, content_type.entries.criteria.selector
|
66
66
|
|
67
|
-
collection.find(selector).
|
67
|
+
collection.find(selector).update_many('$set' => { 'custom_fields_recipe' => content_type.custom_fields_recipe_for(:entries) })
|
68
68
|
end
|
69
69
|
|
70
70
|
end
|
@@ -29,9 +29,9 @@ module Locomotive
|
|
29
29
|
after_destroy :emit_domain_deletion_event
|
30
30
|
|
31
31
|
## named scopes ##
|
32
|
-
scope :match_domain,
|
33
|
-
scope :match_domain_with_exclusion_of,
|
34
|
-
|
32
|
+
scope :match_domain, ->(domain) { any_in(domains: [*domain]) }
|
33
|
+
scope :match_domain_with_exclusion_of, ->(domain, site) {
|
34
|
+
any_in(domains: [*domain]).where(:_id.ne => site.id)
|
35
35
|
}
|
36
36
|
end
|
37
37
|
|
@@ -46,7 +46,6 @@ module Locomotive
|
|
46
46
|
|
47
47
|
def local_path(short = false)
|
48
48
|
if short && self.read_attribute(:local_path)
|
49
|
-
# self.read_attribute(:local_path).gsub(/^#{self.content_type.to_s.pluralize}\//, '')
|
50
49
|
self.read_attribute(:local_path).split('/')[1..-1].join('/')
|
51
50
|
else
|
52
51
|
self.read_attribute(:local_path)
|
@@ -31,7 +31,7 @@ h3 Run your site locally
|
|
31
31
|
|
32
32
|
pre
|
33
33
|
code.bash
|
34
|
-
| cd #{current_site_name_with_underscores}</br>wagon serve
|
34
|
+
| cd #{current_site_name_with_underscores}</br>bundle exec wagon serve
|
35
35
|
|
36
36
|
p Now, update any files of your site and see the results locally.
|
37
37
|
|
@@ -39,4 +39,4 @@ h3 Deploy your modifications
|
|
39
39
|
|
40
40
|
pre
|
41
41
|
code.bash
|
42
|
-
| wagon push production
|
42
|
+
| bundle exec wagon push production
|
@@ -0,0 +1 @@
|
|
1
|
+
{"error":"no site found"}
|
@@ -22,5 +22,5 @@
|
|
22
22
|
|
23
23
|
= render 'locomotive/shared/sidebar/link', icon: 'fa-suitcase', label: t(:sites, scope: 'locomotive.shared.header'), url: sites_path, section_class: 'visible-xs-block'
|
24
24
|
|
25
|
-
= render 'locomotive/shared/sidebar/link', icon: 'fa-sign-out', label: t(:logout, scope: 'locomotive.shared.header'), url:
|
25
|
+
= render 'locomotive/shared/sidebar/link', icon: 'fa-sign-out', label: t(:logout, scope: 'locomotive.shared.header'), url: sign_out_path, data: { method: 'delete' }, section_class: 'visible-xs-block'
|
26
26
|
|
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
= render 'locomotive/shared/sidebar/link', icon: 'fa-suitcase', label: t(:sites, scope: 'locomotive.shared.header'), url: sites_path
|
4
4
|
|
5
|
-
= render 'locomotive/shared/sidebar/link', icon: 'fa-sign-out', label: t(:logout, scope: 'locomotive.shared.header'), url:
|
5
|
+
= render 'locomotive/shared/sidebar/link', icon: 'fa-sign-out', label: t(:logout, scope: 'locomotive.shared.header'), url: sign_out_path, data: { method: 'delete' }
|
@@ -1,5 +1,5 @@
|
|
1
1
|
li= link_to t(:sites, scope: 'locomotive.shared.header'), sites_path
|
2
2
|
li= link_to t(:account, scope: 'locomotive.shared.header'), edit_my_account_path(_location: request.fullpath)
|
3
|
-
li= link_to t(:help, scope: 'locomotive.shared.header'), 'http://
|
3
|
+
li= link_to t(:help, scope: 'locomotive.shared.header'), 'http://locomotive-v3.readme.io'
|
4
4
|
li class="divider"
|
5
|
-
li= link_to t(:logout, scope: 'locomotive.shared.header'),
|
5
|
+
li= link_to t(:logout, scope: 'locomotive.shared.header'), sign_out_path, data: { method: 'delete' }
|
data/config/locales/en.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -10,8 +10,10 @@ Locomotive::Engine.routes.draw do
|
|
10
10
|
failure_app: 'Locomotive::Devise::FailureApp'
|
11
11
|
|
12
12
|
devise_scope :locomotive_account do
|
13
|
-
get
|
14
|
-
post
|
13
|
+
get 'sign_up' => 'registrations#new', as: :sign_up
|
14
|
+
post 'sign_up' => 'registrations#create'
|
15
|
+
get 'sign_in' => 'sessions#new', as: :sign_in
|
16
|
+
delete 'sign_out' => 'sessions#destroy', as: :sign_out
|
15
17
|
end
|
16
18
|
|
17
19
|
root to: 'sites#index'
|
@@ -12,8 +12,6 @@ module Locomotive
|
|
12
12
|
|
13
13
|
template 'locomotive.rb', 'config/initializers/locomotive.rb'
|
14
14
|
|
15
|
-
template 'carrierwave.rb', 'config/initializers/carrierwave.rb'
|
16
|
-
|
17
15
|
template 'devise.rb', 'config/initializers/devise.rb'
|
18
16
|
|
19
17
|
template 'dragonfly.rb', 'config/initializers/dragonfly.rb'
|
@@ -21,6 +19,15 @@ module Locomotive
|
|
21
19
|
template 'mongoid.yml', 'config/mongoid.yml'
|
22
20
|
end
|
23
21
|
|
22
|
+
def install_aws
|
23
|
+
if options.heroku? || yes?('Do you want to store your assets on Amazon S3?')
|
24
|
+
template 'carrierwave_aws.rb', 'config/initializers/carrierwave.rb'
|
25
|
+
gem 'carrierwave-aws'
|
26
|
+
else
|
27
|
+
template 'carrierwave.rb', 'config/initializers/carrierwave.rb'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
24
31
|
def insert_engine_routes
|
25
32
|
route %(
|
26
33
|
# Locomotive Back-office
|
@@ -60,13 +67,6 @@ end
|
|
60
67
|
RUBY
|
61
68
|
end
|
62
69
|
|
63
|
-
inject_into_file 'config/initializers/carrierwave.rb', after: " config.fog_directory = ENV['S3_BUCKET']\n" do <<-'RUBY'
|
64
|
-
|
65
|
-
# Put your CDN host below instead
|
66
|
-
config.asset_host = ENV['S3_BUCKET_REGION'].present? ? "s3-#{ENV['S3_BUCKET_REGION']}.amazonaws.com" : 's3.amazonaws.com'
|
67
|
-
RUBY
|
68
|
-
end
|
69
|
-
|
70
70
|
gem 'platform-api', '~> 0.3.0'
|
71
71
|
end
|
72
72
|
end
|
@@ -9,20 +9,31 @@ CarrierWave.configure do |config|
|
|
9
9
|
config.root = File.join(Rails.root, 'public')
|
10
10
|
|
11
11
|
when :production
|
12
|
-
|
12
|
+
config.storage = :file
|
13
|
+
config.root = File.join(Rails.root, 'public')
|
14
|
+
|
15
|
+
# # put your CDN host below instead
|
16
|
+
# # config.asset_host = 'http://cdn.example.com'
|
17
|
+
|
18
|
+
# # You can also use Amazon S3 instead. The following configuration works for AWS
|
19
|
+
# #
|
20
|
+
# # WARNING: add the "carrierwave-aws" gem in your Rails app Gemfile.
|
21
|
+
# # More information here: https://github.com/sorentwo/carrierwave-aws
|
22
|
+
#
|
23
|
+
# config.storage = :aws
|
24
|
+
# config.aws_bucket = ENV['S3_BUCKET']
|
25
|
+
# config.aws_acl = 'public-read'
|
13
26
|
#
|
14
|
-
#
|
15
|
-
#
|
27
|
+
# config.aws_credentials = {
|
28
|
+
# access_key_id: ENV['S3_KEY_ID'],
|
29
|
+
# secret_access_key: ENV['S3_SECRET_KEY'],
|
30
|
+
# region: ENV['S3_BUCKET_REGION']
|
31
|
+
# }
|
16
32
|
#
|
17
|
-
|
18
|
-
|
19
|
-
config.
|
20
|
-
|
21
|
-
config.aws_credentials = {
|
22
|
-
access_key_id: ENV['S3_KEY_ID'],
|
23
|
-
secret_access_key: ENV['S3_SECRET_KEY'],
|
24
|
-
region: ENV['S3_BUCKET_REGION']
|
25
|
-
}
|
33
|
+
# # Put your CDN host below instead
|
34
|
+
# if ENV['S3_ASSET_HOST_URL'].present?
|
35
|
+
# config.asset_host = ENV['S3_ASSET_HOST_URL']
|
36
|
+
# end
|
26
37
|
|
27
38
|
else
|
28
39
|
# settings for the local filesystem
|
@@ -0,0 +1,36 @@
|
|
1
|
+
CarrierWave.configure do |config|
|
2
|
+
|
3
|
+
config.cache_dir = File.join(Rails.root, 'tmp', 'uploads')
|
4
|
+
|
5
|
+
case Rails.env.to_sym
|
6
|
+
|
7
|
+
when :development
|
8
|
+
config.storage = :file
|
9
|
+
config.root = File.join(Rails.root, 'public')
|
10
|
+
|
11
|
+
when :production
|
12
|
+
# WARNING: add the "carrierwave-aws" gem in your Rails app Gemfile.
|
13
|
+
# More information here: https://github.com/sorentwo/carrierwave-aws
|
14
|
+
|
15
|
+
config.storage = :aws
|
16
|
+
config.aws_bucket = ENV['S3_BUCKET']
|
17
|
+
config.aws_acl = 'public-read'
|
18
|
+
|
19
|
+
config.aws_credentials = {
|
20
|
+
access_key_id: ENV['S3_KEY_ID'],
|
21
|
+
secret_access_key: ENV['S3_SECRET_KEY'],
|
22
|
+
region: ENV['S3_BUCKET_REGION']
|
23
|
+
}
|
24
|
+
|
25
|
+
# Put your CDN host below instead
|
26
|
+
if ENV['S3_ASSET_HOST_URL'].present?
|
27
|
+
config.asset_host = ENV['S3_ASSET_HOST_URL']
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
# settings for the local filesystem
|
32
|
+
config.storage = :file
|
33
|
+
config.root = File.join(Rails.root, 'public')
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -1,46 +1,115 @@
|
|
1
1
|
development:
|
2
|
-
# Configure available database
|
3
|
-
|
4
|
-
# Defines the default
|
2
|
+
# Configure available database clients. (required)
|
3
|
+
clients:
|
4
|
+
# Defines the default client. (required)
|
5
5
|
default:
|
6
6
|
# Defines the name of the default database that Mongoid can connect to.
|
7
7
|
# (required).
|
8
8
|
database: <%= Rails.application.class.parent.to_s.underscore.downcase %>_dev
|
9
|
-
# Provides the hosts the default
|
9
|
+
# Provides the hosts the default client can connect to. Must be an array
|
10
10
|
# of host:port pairs. (required)
|
11
11
|
hosts:
|
12
12
|
- localhost:27017
|
13
13
|
options:
|
14
|
-
# Change
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
18
|
-
# Change the default
|
19
|
-
# :
|
20
|
-
#
|
21
|
-
#
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
# Change the default write concern. (default = { w: 1 })
|
15
|
+
# write:
|
16
|
+
# w: 1
|
17
|
+
|
18
|
+
# Change the default read preference. Valid options for mode are: :secondary,
|
19
|
+
# :secondary_preferred, :primary, :primary_preferred, :nearest
|
20
|
+
# (default: primary)
|
21
|
+
# read:
|
22
|
+
# mode: :secondary_preferred
|
23
|
+
|
24
|
+
# The name of the user for authentication.
|
25
|
+
# user: 'user'
|
26
|
+
|
27
|
+
# The password of the user for authentication.
|
28
|
+
# password: 'password'
|
29
|
+
|
30
|
+
# The user's database roles.
|
31
|
+
# roles:
|
32
|
+
# - 'dbOwner'
|
33
|
+
|
34
|
+
# Change the default authentication mechanism. Valid options are: :scram,
|
35
|
+
# :mongodb_cr, :mongodb_x509, and :plain. (default on 3.0 is :scram, default
|
36
|
+
# on 2.4 and 2.6 is :plain)
|
37
|
+
# auth_mech: :scram
|
38
|
+
|
39
|
+
# The database or source to authenticate the user against. (default: admin)
|
40
|
+
# auth_source: admin
|
41
|
+
|
42
|
+
# Force a the driver cluster to behave in a certain manner instead of auto-
|
43
|
+
# discovering. Can be one of: :direct, :replica_set, :sharded. Set to :direct
|
44
|
+
# when connecting to hidden members of a replica set.
|
45
|
+
# connect: :direct
|
46
|
+
|
47
|
+
# Changes the default time in seconds the server monitors refresh their status
|
48
|
+
# via ismaster commands. (default: 10)
|
49
|
+
# heartbeat_frequency: 10
|
50
|
+
|
51
|
+
# The time in seconds for selecting servers for a near read preference. (default: 5)
|
52
|
+
# local_threshold: 5
|
53
|
+
|
54
|
+
# The timeout in seconds for selecting a server for an operation. (default: 30)
|
55
|
+
# server_selection_timeout: 30
|
56
|
+
|
57
|
+
# The maximum number of connections in the connection pool. (default: 5)
|
58
|
+
# max_pool_size: 5
|
59
|
+
|
60
|
+
# The minimum number of connections in the connection pool. (default: 1)
|
61
|
+
# min_pool_size: 1
|
27
62
|
|
28
|
-
|
29
|
-
|
63
|
+
# The time to wait, in seconds, in the connection pool for a connection
|
64
|
+
# to be checked in before timing out. (default: 5)
|
65
|
+
# wait_queue_timeout: 5
|
30
66
|
|
67
|
+
# The time to wait to establish a connection before timing out, in seconds.
|
68
|
+
# (default: 5)
|
69
|
+
# connect_timeout: 5
|
70
|
+
|
71
|
+
# The timeout to wait to execute operations on a socket before raising an error.
|
72
|
+
# (default: 5)
|
73
|
+
# socket_timeout: 5
|
74
|
+
|
75
|
+
# The name of the replica set to connect to. Servers provided as seeds that do
|
76
|
+
# not belong to this replica set will be ignored.
|
77
|
+
# replica_set: name
|
78
|
+
|
79
|
+
# Whether to connect to the servers via ssl. (default: false)
|
80
|
+
# ssl: true
|
81
|
+
|
82
|
+
# The certificate file used to identify the connection against MongoDB.
|
83
|
+
# ssl_cert: /path/to/my.cert
|
84
|
+
|
85
|
+
# The private keyfile used to identify the connection against MongoDB.
|
86
|
+
# Note that even if the key is stored in the same file as the certificate,
|
87
|
+
# both need to be explicitly specified.
|
88
|
+
# ssl_key: /path/to/my.key
|
89
|
+
|
90
|
+
# A passphrase for the private key.
|
91
|
+
# ssl_key_pass_phrase: password
|
92
|
+
|
93
|
+
# Whether or not to do peer certification validation. (default: false)
|
94
|
+
# ssl_verify: true
|
95
|
+
|
96
|
+
# The file containing a set of concatenated certification authority certifications
|
97
|
+
# used to validate certs passed from the other end of the connection.
|
98
|
+
# ssl_ca_cert: /path/to/ca.cert
|
99
|
+
|
100
|
+
|
101
|
+
# Configure Mongoid specific options. (optional)
|
102
|
+
options:
|
31
103
|
# Includes the root model name in json serialization. (default: false)
|
32
104
|
# include_root_in_json: false
|
33
105
|
|
34
|
-
# Include the _type field in
|
106
|
+
# Include the _type field in serialization. (default: false)
|
35
107
|
# include_type_for_serialization: false
|
36
108
|
|
37
109
|
# Preload all models in development, needed when models use
|
38
110
|
# inheritance. (default: false)
|
39
111
|
# preload_models: false
|
40
112
|
|
41
|
-
# Protect id and type from mass assignment. (default: true)
|
42
|
-
# protect_sensitive_fields: true
|
43
|
-
|
44
113
|
# Raise an error when performing a #find and the document is not found.
|
45
114
|
# (default: true)
|
46
115
|
# raise_not_found_error: true
|
@@ -49,33 +118,26 @@ development:
|
|
49
118
|
# existing method. (default: false)
|
50
119
|
# scope_overwrite_exception: false
|
51
120
|
|
52
|
-
#
|
53
|
-
# admin access. (default: false)
|
54
|
-
# skip_version_check: false
|
55
|
-
|
56
|
-
# User Active Support's time zone in conversions. (default: true)
|
121
|
+
# Use Active Support's time zone in conversions. (default: true)
|
57
122
|
# use_activesupport_time_zone: true
|
58
123
|
|
59
124
|
# Ensure all times are UTC in the app side. (default: false)
|
60
125
|
# use_utc: false
|
61
126
|
|
62
127
|
test:
|
63
|
-
|
128
|
+
clients:
|
64
129
|
default:
|
65
130
|
database: <%= Rails.application.class.parent.to_s.underscore.downcase %>_test
|
66
131
|
hosts:
|
67
132
|
- localhost:27017
|
68
133
|
options:
|
69
|
-
|
70
|
-
# identity_map_enabled: true
|
134
|
+
max_pool_size: 1
|
71
135
|
|
72
136
|
production:
|
73
|
-
|
137
|
+
clients:
|
74
138
|
default:
|
75
139
|
database: <%= Rails.application.class.parent.to_s.underscore.downcase %>_production
|
76
140
|
hosts:
|
77
141
|
- localhost:27017
|
78
142
|
options:
|
79
|
-
|
80
|
-
# identity_map_enabled: true
|
81
|
-
# uri: <%%= ENV['MONGOLAB_URI'] || ENV['MONGOHQ_URL'] %>
|
143
|
+
max_pool_size: 1
|
@@ -25,7 +25,7 @@ module Locomotive
|
|
25
25
|
begin
|
26
26
|
@app.call(env)
|
27
27
|
rescue ::Locomotive::Steam::NoSiteException => exception
|
28
|
-
handle_no_account_or_site(env)
|
28
|
+
handle_no_account_or_site(env, request)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -50,10 +50,12 @@ module Locomotive
|
|
50
50
|
|
51
51
|
# if no account in the database, must be a fresh install,
|
52
52
|
# then ask the user to create the first account.
|
53
|
-
# if accounts but
|
54
|
-
def handle_no_account_or_site(env)
|
53
|
+
# if accounts but no site, redirect to the sign in page
|
54
|
+
def handle_no_account_or_site(env, request)
|
55
55
|
if Locomotive::Account.count == 0
|
56
|
-
|
56
|
+
redirect_to(sign_up_path)
|
57
|
+
elsif default_host?(request)
|
58
|
+
redirect_to(sign_in_path)
|
57
59
|
else
|
58
60
|
Locomotive::ErrorsController.action(:no_site).call(env)
|
59
61
|
end
|
@@ -93,6 +95,10 @@ module Locomotive
|
|
93
95
|
nil
|
94
96
|
end
|
95
97
|
|
98
|
+
def redirect_to(destination)
|
99
|
+
[301, { 'Location' => destination, 'Content-Type' => 'text/html' }, []]
|
100
|
+
end
|
101
|
+
|
96
102
|
def site_handle_regexp
|
97
103
|
@regexp ||= /#{Locomotive.mounted_on}\/([^\/]+)/o
|
98
104
|
end
|
@@ -127,7 +127,7 @@ module Mongoid #:nodoc:
|
|
127
127
|
fields = _criteria.options[:fields]
|
128
128
|
sort = _criteria.options[:sort]
|
129
129
|
|
130
|
-
document = collection.find(selector).
|
130
|
+
document = collection.find(selector).projection(fields).sort(sort).limit(1).first
|
131
131
|
document ? document[field.to_s].to_i : nil
|
132
132
|
end
|
133
133
|
|
@@ -9,14 +9,16 @@ Locomotive::Steam.configure do |config|
|
|
9
9
|
# Dragonfly instance embedded in Steam needs a secret key
|
10
10
|
config.image_resizer_secret = Locomotive.config.steam_image_resizer_secret
|
11
11
|
|
12
|
-
if asset_host = CarrierWave::Uploader::Base.asset_host
|
12
|
+
if asset_host = CarrierWave::Uploader::Base.asset_host # CDN?
|
13
13
|
config.asset_host = asset_host
|
14
|
-
|
15
|
-
config.asset_host =
|
14
|
+
elsif asset_host = CarrierWave.base_host # Example: AWS storage
|
15
|
+
config.asset_host = asset_host
|
16
|
+
else # Example: File storage
|
17
|
+
config.asset_path = Rails.root.join('public').to_s
|
16
18
|
end
|
17
19
|
|
18
20
|
# rely on Mongoid for the connection information
|
19
|
-
if mongoid = Mongoid.configure.
|
21
|
+
if mongoid = Mongoid.configure.clients[:default]
|
20
22
|
options = mongoid[:uri] ? mongoid.slice(:uri) : mongoid.slice(:database, :hosts, :username, :password)
|
21
23
|
config.adapter = { name: :'mongoDB' }.merge(options.symbolize_keys)
|
22
24
|
end
|
data/lib/locomotive/version.rb
CHANGED