lockup 1.3.0 → 1.3.1
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 +15 -0
- data/README.md +13 -7
- data/Rakefile +1 -1
- data/app/controllers/lockup/lockup_controller.rb +13 -11
- data/app/views/layouts/lockup/_inline_css.html.erb +123 -3
- data/app/views/lockup/lockup/unlock.html.erb +5 -5
- data/config/routes.rb +1 -1
- data/lib/lockup.rb +3 -3
- data/lib/lockup/engine.rb +1 -1
- data/lib/lockup/version.rb +1 -1
- data/spec/controllers/lockup/lockup_controller_spec.rb +14 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/app/models/post.rb +3 -3
- data/spec/dummy/app/views/layouts/application.html.erb +2 -2
- data/spec/dummy/config/routes.rb +3 -3
- data/spec/features/access_restricted_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +88 -103
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MmFiY2Y3YTIxODM0MzJmM2E2MzE2ZDYzYjdiZjIyMWUyNTQ1Njc0Mg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODY2ZjhlMGZkNjgxZTZkMjkyYzQ3NDcwZGQyZjg5NjhhZTgyODZlYw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZWVkNmE0MWE1NjUxYmE3NGI3MzRlNzA5MTFlYTcxYzBhNzM1ZTQ2M2M3OWFm
|
10
|
+
NTM4NDY3NzM3YzQ0MGI1ZDMyZmU2NGNjMjZmOTgyYWQ3ODRkNmQyODVlZjFm
|
11
|
+
N2RjNjMxMmJjMGRlMDgwODMwZmM3ODAxNmYwOTBlODNiMDRjNjA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Yzg2N2I5ZjYyZjQ2MmQyYzAzNjRmZTUzOTg4NjM2NWZkZmZlYTg4OTlkOTI3
|
14
|
+
MGUxNGJkZjU2YTczMzY1NzFiMWVlZTBlZTJjYmQ1NzUwYTNlNGExZjYxNTQ4
|
15
|
+
ZTVmYjAzOGQ4ZTY0MjU0YTZkMmUwNmY5MmUwZjkyZTRlZGZmN2I=
|
data/README.md
CHANGED
@@ -8,19 +8,19 @@ A simple gem to more elegantly place a staging server or other in-progress rails
|
|
8
8
|
|
9
9
|
_“Can I come into your fort?”_
|
10
10
|
|
11
|
-
_“…what
|
11
|
+
_“…what’s the codeword?”_
|
12
12
|
|
13
13
|
(currently used in production with Rails 3.X and Rails 4)
|
14
14
|
|
15
15
|
## Installation
|
16
16
|
|
17
|
-
1. Add this line to your application
|
17
|
+
1. Add this line to your application’s Gemfile:
|
18
18
|
|
19
19
|
gem 'lockup'
|
20
20
|
|
21
21
|
2. Define a codeword (see Usage below).
|
22
22
|
|
23
|
-
3. Mount the engine in your application
|
23
|
+
3. Mount the engine in your application’s routes file (usually first, for best results):
|
24
24
|
|
25
25
|
mount Lockup::Engine, at: '/lockup'
|
26
26
|
|
@@ -34,11 +34,17 @@ If you think you might need a hint:
|
|
34
34
|
|
35
35
|
ENV["LOCKUP_HINT"] = 'Something that you do not tell everyone.'
|
36
36
|
|
37
|
-
If you
|
37
|
+
If you’re using Rails 4.1 or greater, you can add your Lockup Codeword via Rails Secrets functionality in your secrets.yml file:
|
38
38
|
|
39
|
-
|
39
|
+
lockup_codeword: 'love'
|
40
40
|
|
41
|
-
|
41
|
+
lockup_hint: 'Pepé Le Pew'
|
42
|
+
|
43
|
+
If you’re using [Figaro](https://github.com/laserlemon/figaro), set your Lockup codeword and hint (optional) in your application.yml file:
|
44
|
+
|
45
|
+
LOCKUP_CODEWORD: 'love'
|
46
|
+
|
47
|
+
LOCKUP_HINT: 'Pepé Le Pew'
|
42
48
|
|
43
49
|
**Codewords are not case-sensitive, by design. Keep it simple.**
|
44
50
|
|
@@ -46,7 +52,7 @@ If you're using [Figaro](https://github.com/laserlemon/figaro), set your Lockup
|
|
46
52
|
|
47
53
|
### Use Lockup around a specific controller:
|
48
54
|
|
49
|
-
1. Follow the
|
55
|
+
1. Follow the installation instructions above.
|
50
56
|
|
51
57
|
2. In your application_controller.rb file, add:
|
52
58
|
|
data/Rakefile
CHANGED
@@ -13,18 +13,20 @@ module Lockup
|
|
13
13
|
run_redirect
|
14
14
|
end
|
15
15
|
else
|
16
|
-
render :
|
16
|
+
render nothing: true
|
17
17
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
18
|
+
elsif request.post?
|
19
|
+
if params[:lockup].present? && params[:lockup].respond_to?(:'[]')
|
20
|
+
@codeword = params[:lockup][:codeword].to_s.downcase
|
21
|
+
@return_to = params[:lockup][:return_to]
|
22
|
+
if @codeword == ENV["LOCKUP_CODEWORD"].to_s.downcase || ((Rails::VERSION::MAJOR >= 4 && Rails::VERSION::MINOR >= 1) && @codeword == Rails.application.secrets.lockup_codeword.to_s.downcase)
|
23
|
+
set_cookie
|
24
|
+
run_redirect
|
25
|
+
else
|
26
|
+
@wrong = true
|
27
|
+
end
|
26
28
|
else
|
27
|
-
|
29
|
+
render nothing: true
|
28
30
|
end
|
29
31
|
end
|
30
32
|
end
|
@@ -32,7 +34,7 @@ module Lockup
|
|
32
34
|
private
|
33
35
|
|
34
36
|
def set_cookie
|
35
|
-
cookies[:lockup] = { :
|
37
|
+
cookies[:lockup] = { value: @codeword.to_s.downcase, expires: (Time.now + 5.years) }
|
36
38
|
end
|
37
39
|
|
38
40
|
def run_redirect
|
@@ -6,9 +6,14 @@ body {
|
|
6
6
|
overflow: hidden;
|
7
7
|
}
|
8
8
|
h1 {
|
9
|
+
margin: 0 auto;
|
10
|
+
margin-top: 40px;
|
11
|
+
margin-bottom: 40px;
|
12
|
+
width: 100%;
|
9
13
|
font-family: Helvetica, sans-serif;
|
10
14
|
font-size: 60px;
|
11
15
|
text-align: center;
|
16
|
+
line-height: 70px;
|
12
17
|
}
|
13
18
|
form input[type='password'] {
|
14
19
|
display: block;
|
@@ -128,10 +133,74 @@ form p {
|
|
128
133
|
font-weight: bold;
|
129
134
|
}
|
130
135
|
|
131
|
-
@media only screen and (min-width :
|
136
|
+
@media only screen and (min-width : 1149px) and (max-width : 1570px) {
|
137
|
+
|
138
|
+
h1 {
|
139
|
+
width: 72%;
|
140
|
+
}
|
141
|
+
|
142
|
+
}
|
143
|
+
|
144
|
+
@media only screen and (min-width : 769px) and (max-width : 1148px) {
|
145
|
+
|
146
|
+
h1 {
|
147
|
+
width: 82%;
|
148
|
+
}
|
149
|
+
|
150
|
+
}
|
151
|
+
|
152
|
+
@media only screen and (min-width : 690px) and (max-width : 768px) {
|
153
|
+
|
154
|
+
h1 {
|
155
|
+
width: 80%;
|
156
|
+
}
|
157
|
+
|
158
|
+
}
|
159
|
+
|
160
|
+
@media only screen and (min-width : 641px) and (max-width : 689px) {
|
161
|
+
|
162
|
+
h1 {
|
163
|
+
width: 88%;
|
164
|
+
}
|
165
|
+
|
166
|
+
}
|
167
|
+
|
168
|
+
@media only screen and (min-width : 563px) and (max-width : 640px) {
|
169
|
+
|
170
|
+
h1 {
|
171
|
+
width: 90%;
|
172
|
+
}
|
173
|
+
|
174
|
+
}
|
175
|
+
|
176
|
+
@media only screen and (min-width : 481px) and (max-width : 562px) {
|
177
|
+
|
178
|
+
h1 {
|
179
|
+
width: 90%;
|
180
|
+
}
|
181
|
+
|
182
|
+
}
|
183
|
+
|
184
|
+
@media only screen and (min-width : 410px) and (max-width : 480px) {
|
185
|
+
|
186
|
+
h1 {
|
187
|
+
width: 84%;
|
188
|
+
}
|
189
|
+
|
190
|
+
}
|
191
|
+
|
192
|
+
@media only screen and (min-width : 350px) and (max-width : 409px) {
|
193
|
+
|
194
|
+
h1 {
|
195
|
+
width: 100%;
|
196
|
+
}
|
197
|
+
|
198
|
+
}
|
199
|
+
|
200
|
+
@media only screen and (min-width : 350px) and (max-width : 640px) {
|
132
201
|
body {
|
133
202
|
min-width: 1px;
|
134
|
-
max-width:
|
203
|
+
max-width: 640px;
|
135
204
|
-webkit-text-size-adjust: none;
|
136
205
|
}
|
137
206
|
|
@@ -143,7 +212,9 @@ form p {
|
|
143
212
|
}
|
144
213
|
|
145
214
|
h1 {
|
215
|
+
margin-top: 0px;
|
146
216
|
font-size: 36px;
|
217
|
+
line-height: 42px;
|
147
218
|
}
|
148
219
|
form input[type='password'] {
|
149
220
|
padding: 12px 8px;
|
@@ -172,4 +243,53 @@ form p {
|
|
172
243
|
#hint.show {
|
173
244
|
margin-bottom: 28px;
|
174
245
|
}
|
175
|
-
}
|
246
|
+
}
|
247
|
+
|
248
|
+
@media only screen and (min-width : 1px) and (max-width : 349px) {
|
249
|
+
body {
|
250
|
+
min-width: 1px;
|
251
|
+
max-width: 349px;
|
252
|
+
-webkit-text-size-adjust: none;
|
253
|
+
}
|
254
|
+
|
255
|
+
.mobile_only {
|
256
|
+
display: inline !important;
|
257
|
+
}
|
258
|
+
.no_mobile {
|
259
|
+
display: none !important;
|
260
|
+
}
|
261
|
+
|
262
|
+
h1 {
|
263
|
+
margin-top: 0px;
|
264
|
+
width: 97%;
|
265
|
+
font-size: 32px;
|
266
|
+
line-height: 38px;
|
267
|
+
}
|
268
|
+
form input[type='password'] {
|
269
|
+
padding: 12px 8px;
|
270
|
+
width: 175px;
|
271
|
+
font-size: 22px;
|
272
|
+
}
|
273
|
+
form button {
|
274
|
+
width: 200px;
|
275
|
+
font-size: 22px;
|
276
|
+
}
|
277
|
+
.hmm h3 {
|
278
|
+
width: 90%;
|
279
|
+
font-size: 16px;
|
280
|
+
}
|
281
|
+
#hint_icon {
|
282
|
+
width: 20px;
|
283
|
+
height: 20px;
|
284
|
+
font-size: 12px;
|
285
|
+
line-height: 22px;
|
286
|
+
margin: -78px 0 0 105px;
|
287
|
+
}
|
288
|
+
#hint {
|
289
|
+
font-size: 14px;
|
290
|
+
margin-top: -12px;
|
291
|
+
}
|
292
|
+
#hint.show {
|
293
|
+
margin-bottom: 28px;
|
294
|
+
}
|
295
|
+
}
|
@@ -6,11 +6,11 @@
|
|
6
6
|
</div>
|
7
7
|
<% end %>
|
8
8
|
|
9
|
-
<%= form_for :lockup, :
|
9
|
+
<%= form_for :lockup, url: { action: 'unlock' } do |form| %>
|
10
10
|
<% unless @wrong == true %>
|
11
|
-
<p><%= form.password_field "codeword", :
|
11
|
+
<p><%= form.password_field "codeword", placeholder: "code word" %></p>
|
12
12
|
<% else %>
|
13
|
-
<p><%= form.password_field "codeword", :
|
13
|
+
<p><%= form.password_field "codeword", value: @codeword, class: 'nope' %></p>
|
14
14
|
<% end %>
|
15
15
|
|
16
16
|
<% if ENV["LOCKUP_HINT"].present? || ((Rails::VERSION::MAJOR >= 4 && Rails::VERSION::MINOR >= 1) && Rails.application.secrets.lockup_hint.present?) %>
|
@@ -19,9 +19,9 @@
|
|
19
19
|
<% end %>
|
20
20
|
|
21
21
|
<% if params[:return_to].present? %>
|
22
|
-
<%= form.hidden_field "return_to", :
|
22
|
+
<%= form.hidden_field "return_to", value: params[:return_to] %>
|
23
23
|
<% elsif @return_to.present? %>
|
24
|
-
<%= form.hidden_field "return_to", :
|
24
|
+
<%= form.hidden_field "return_to", value: @return_to %>
|
25
25
|
<% end %>
|
26
26
|
|
27
27
|
<p><%= button_tag "Go" %></p>
|
data/config/routes.rb
CHANGED
data/lib/lockup.rb
CHANGED
@@ -4,7 +4,7 @@ module Lockup
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
before_filter :check_for_lockup, :
|
7
|
+
before_filter :check_for_lockup, except: ["unlock"]
|
8
8
|
end
|
9
9
|
|
10
10
|
private
|
@@ -15,10 +15,10 @@ module Lockup
|
|
15
15
|
if cookies[:lockup] == ENV["LOCKUP_CODEWORD"].to_s.downcase || ((Rails::VERSION::MAJOR >= 4 && Rails::VERSION::MINOR >= 1) && cookies[:lockup] == Rails.application.secrets.lockup_codeword.to_s.downcase)
|
16
16
|
return
|
17
17
|
else
|
18
|
-
redirect_to lockup.unlock_path(:
|
18
|
+
redirect_to lockup.unlock_path(return_to: request.fullpath.split('?lockup_codeword')[0], lockup_codeword: params[:lockup_codeword])
|
19
19
|
end
|
20
20
|
else
|
21
|
-
redirect_to lockup.unlock_path(:
|
21
|
+
redirect_to lockup.unlock_path(return_to: request.fullpath.split('?lockup_codeword')[0], lockup_codeword: params[:lockup_codeword])
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/lockup/engine.rb
CHANGED
data/lib/lockup/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Lockup::LockupController do
|
4
|
+
describe 'a malicious user posts invalid data' do
|
5
|
+
it 'does not fail' do
|
6
|
+
post 'unlock', {use_route: :lockup, foo: 'bar'}
|
7
|
+
end
|
8
|
+
end
|
9
|
+
describe 'a malicious user requests a format that is not HTML' do
|
10
|
+
it 'does not fail' do
|
11
|
+
get 'unlock', use_route: :lockup, format: 'text'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -4,8 +4,8 @@ class Post
|
|
4
4
|
attr_accessor :id, :title, :body
|
5
5
|
|
6
6
|
POSTS = [
|
7
|
-
{:
|
8
|
-
{:
|
7
|
+
{id: 1, title: 'Title One', body: 'Body One'},
|
8
|
+
{id: 2, title: 'Title Two', body: 'Body Two'}
|
9
9
|
]
|
10
10
|
|
11
11
|
def self.all
|
@@ -20,4 +20,4 @@ class Post
|
|
20
20
|
id
|
21
21
|
end
|
22
22
|
|
23
|
-
end
|
23
|
+
end
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>Dummy</title>
|
5
|
-
<%= stylesheet_link_tag "application", media: "all",
|
6
|
-
<%= javascript_include_tag "application",
|
5
|
+
<%= stylesheet_link_tag "application", media: "all", data: {turbolinks_track: true} %>
|
6
|
+
<%= javascript_include_tag "application", data: {turbolinks_track: true} %>
|
7
7
|
<%= csrf_meta_tags %>
|
8
8
|
</head>
|
9
9
|
<body>
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
|
3
|
-
mount Lockup::Engine, :
|
3
|
+
mount Lockup::Engine, at: '/lockup', as: 'lockup'
|
4
4
|
|
5
|
-
resources :posts, :
|
5
|
+
resources :posts, only: [:index, :show]
|
6
6
|
|
7
7
|
# this makes tests fail with endless redirect loop b/c it is before lockup routes
|
8
8
|
# catch all route b/c Rails `rescue_from` doesn't catch ActionController::RoutingError
|
9
|
-
match '*path', :
|
9
|
+
match '*path', via: :all, to: 'application#render_404'
|
10
10
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,94 +1,89 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockup
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 1.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.1
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- gb Studio
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-12-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: rails
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 5
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
version: "3"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
32
20
|
- - <
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
|
35
|
-
segments:
|
36
|
-
- 5
|
37
|
-
version: "5"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5'
|
38
23
|
type: :runtime
|
39
|
-
version_requirements: *id001
|
40
|
-
- !ruby/object:Gem::Dependency
|
41
|
-
name: rspec-rails
|
42
24
|
prerelease: false
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec-rails
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
52
40
|
type: :development
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: capybara
|
56
41
|
prerelease: false
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: capybara
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
66
54
|
type: :development
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: launchy
|
70
55
|
prerelease: false
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: launchy
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
80
68
|
type: :development
|
81
|
-
|
82
|
-
|
83
|
-
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
description: A simple gem to more elegantly place a staging server or other in-progress
|
76
|
+
application behind a basic codeword. It’s easy to implement, share with clients/collaborators,
|
77
|
+
and more beautiful than the typical password-protection sheet.
|
78
|
+
email:
|
84
79
|
- hello@grantblakeman.com
|
85
80
|
executables: []
|
86
|
-
|
87
81
|
extensions: []
|
88
|
-
|
89
82
|
extra_rdoc_files: []
|
90
|
-
|
91
|
-
|
83
|
+
files:
|
84
|
+
- MIT-LICENSE
|
85
|
+
- README.md
|
86
|
+
- Rakefile
|
92
87
|
- app/controllers/lockup/application_controller.rb
|
93
88
|
- app/controllers/lockup/lockup_controller.rb
|
94
89
|
- app/helpers/lockup/application_helper.rb
|
@@ -97,13 +92,12 @@ files:
|
|
97
92
|
- app/views/layouts/lockup/application.html.erb
|
98
93
|
- app/views/lockup/lockup/unlock.html.erb
|
99
94
|
- config/routes.rb
|
95
|
+
- lib/lockup.rb
|
100
96
|
- lib/lockup/engine.rb
|
101
97
|
- lib/lockup/version.rb
|
102
|
-
- lib/lockup.rb
|
103
98
|
- lib/tasks/lockup_tasks.rake
|
104
|
-
-
|
105
|
-
- Rakefile
|
106
|
-
- README.md
|
99
|
+
- spec/controllers/lockup/lockup_controller_spec.rb
|
100
|
+
- spec/dummy/Rakefile
|
107
101
|
- spec/dummy/app/assets/javascripts/application.js
|
108
102
|
- spec/dummy/app/assets/stylesheets/application.css
|
109
103
|
- spec/dummy/app/controllers/application_controller.rb
|
@@ -116,6 +110,7 @@ files:
|
|
116
110
|
- spec/dummy/bin/bundle
|
117
111
|
- spec/dummy/bin/rails
|
118
112
|
- spec/dummy/bin/rake
|
113
|
+
- spec/dummy/config.ru
|
119
114
|
- spec/dummy/config/application.rb
|
120
115
|
- spec/dummy/config/boot.rb
|
121
116
|
- spec/dummy/config/database.yml.old
|
@@ -132,49 +127,39 @@ files:
|
|
132
127
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
133
128
|
- spec/dummy/config/locales/en.yml
|
134
129
|
- spec/dummy/config/routes.rb
|
135
|
-
- spec/dummy/config.ru
|
136
130
|
- spec/dummy/public/404.html
|
137
131
|
- spec/dummy/public/422.html
|
138
132
|
- spec/dummy/public/500.html
|
139
133
|
- spec/dummy/public/favicon.ico
|
140
|
-
- spec/dummy/Rakefile
|
141
134
|
- spec/features/access_restricted_spec.rb
|
142
135
|
- spec/spec_helper.rb
|
143
136
|
- spec/support/features/user_agent_helper.rb
|
144
137
|
homepage: http://lockupgem.com
|
145
|
-
licenses:
|
138
|
+
licenses:
|
146
139
|
- MIT
|
140
|
+
metadata: {}
|
147
141
|
post_install_message:
|
148
142
|
rdoc_options: []
|
149
|
-
|
150
|
-
require_paths:
|
143
|
+
require_paths:
|
151
144
|
- lib
|
152
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
none: false
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
hash: 3
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
version: "0"
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
170
155
|
requirements: []
|
171
|
-
|
172
156
|
rubyforge_project:
|
173
|
-
rubygems_version:
|
157
|
+
rubygems_version: 2.4.3
|
174
158
|
signing_key:
|
175
|
-
specification_version:
|
159
|
+
specification_version: 4
|
176
160
|
summary: Lock staging servers from search engines and prying eyes.
|
177
|
-
test_files:
|
161
|
+
test_files:
|
162
|
+
- spec/controllers/lockup/lockup_controller_spec.rb
|
178
163
|
- spec/dummy/app/assets/javascripts/application.js
|
179
164
|
- spec/dummy/app/assets/stylesheets/application.css
|
180
165
|
- spec/dummy/app/controllers/application_controller.rb
|