ember-cli-deploy-rack 2.3.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9ba5426b5df3a3f69d10b951d9a5fec1e98e0778
4
+ data.tar.gz: 85a123bb973db7248f2adbf270d0a4509de11c14
5
+ SHA512:
6
+ metadata.gz: 8d953512e96e53912513345d1d0762b006dcda54075e7ffcc8b75ffd1842beba973675e728e1d2d2462a81b1e5696338a7d28cb6cc03778d3e26ea960f701b20
7
+ data.tar.gz: 4ddffd63486a18effb0c88b6fd9d13fd3ce2632ad88bba3ec675ef266ed186474dd820e6d2229a674a3b5aa34120c7fc3781bf613c5b88fd4f7e8bcdce4d3d81
data/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ 2.3.0
2
+ =====
3
+
4
+ * [✖] Removed logging out of engine, should be configured via `config.ru`
5
+ * [✓] Use `Sinatra::Base` instead of `Sinatra::Application`
6
+ * [➠] Improved `debug` view
7
+
8
+ 2.2.0 (Yanked)
9
+ ==============
10
+
11
+ * [➠] First release on RubyGems
12
+ * [➠] Debug information can be enabled / disabled
13
+ * [➠] Formatted debug information
14
+
15
+ 2.1.0
16
+ =====
17
+
18
+ * [➠] Updated README
19
+ * [➠] Refactored engine code
20
+ * [✚] Added `debug` route
21
+ * [✖] Removed `config` gem, `sinatra/config_file` is perfectly adequate
22
+
23
+ 2.0.1
24
+ =====
25
+
26
+ * [➠] Response with 400 when revision is not valid
27
+
28
+ 2.0.0
29
+ =====
30
+
31
+ * [➠] Renamed `index_id` to `key_prefix`
32
+ * [➠] Added `active_content_suffix` and `revision` options
33
+ * [➠] Compatibility with the latest version of `ember-cli-deploy-redis`
34
+
35
+ 1.0.1
36
+ =====
37
+
38
+ * [✓] Fixed version require
39
+
40
+ 1.0.0
41
+ =====
42
+
43
+ * [✚] Added specs
44
+ * [➠] Configured Travis CI, Code Climate, Test Coverage, RuboCop and Gemnasium
45
+ * [❶] First commit (born from Bitaculous Booster)
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,18 @@
1
+ Contribution Guidelines
2
+ =======================
3
+
4
+ Making a pull request
5
+ ---------------------
6
+
7
+ If you'd like to submit a pull request please adhere to the following:
8
+
9
+ 1. Your code *must* be tested. Please TDD your code!
10
+ 2. 120 characters code width
11
+ 3. Two-spaces instead of tabs
12
+ 4. Single-quotes instead of double-quotes unless you are using string interpolation or escapes
13
+ 5. No single-character variables
14
+ 6. General Ruby naming conventions for files and classes
15
+
16
+ Please note that you must adhere to each of the above mentioned rules. Failure to do so will result in an immediate
17
+ closing of the pull request. If you update and rebase the pull request to follow the guidelines your pull request will
18
+ be re-opened and considered for inclusion.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015-2016 Bitaculous
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,219 @@
1
+ [Ember CLI Deploy Rack]
2
+ =======================
3
+
4
+ [![Travis CI Status][Travis CI Status]][Travis CI]
5
+ [![Code Climate Status][Code Climate Status]][Code Climate]
6
+ [![Test Coverage Status][Test Coverage Status]][Test Coverage]
7
+ [![Gemnasium Status][Gemnasium Status]][Gemnasium]
8
+
9
+ **A [Rack] package to launch your [Ember.js] application into the Cloud.**
10
+
11
+ Summary
12
+ -------
13
+
14
+ Ember CLI Deploy Rack can be used to serve an [Ember CLI] application deployed with the help of [Ember CLI Deploy] and
15
+ [ember-deploy-redis].
16
+
17
+ Basically, it is a [Sinatra] application, which connects to Redis and returns the uploaded index.html.
18
+
19
+ You can deploy your application to production, test it out by passing an `revision` parameter with the revision you want
20
+ to test and activate when you feel confident that everything is working as expected.
21
+
22
+ For further information see [Ember CLI Deploy].
23
+
24
+ Prerequisites
25
+ -------------
26
+
27
+ * [Ruby]
28
+ * [Redis]
29
+
30
+ Installation
31
+ ------------
32
+
33
+ 1. Create a Gemfile
34
+
35
+ ```ruby
36
+ #!/usr/bin/env bundle
37
+
38
+ source 'https://rubygems.org'
39
+
40
+ gem 'ember-cli-deploy-rack', require: false
41
+ ```
42
+
43
+ 2. Run `bundle` to install all dependencies with [Bundler]
44
+
45
+ Usage
46
+ -----
47
+
48
+ 1. Create a Rack configuration
49
+
50
+ ```ruby
51
+ #!/usr/bin/env rackup
52
+
53
+ # This file is used by Rack-based servers to start the application.
54
+
55
+ require 'bundler/setup'
56
+
57
+ require 'ember/cli/deploy/rack'
58
+
59
+ run Ember::CLI::Deploy::Rack::Engine
60
+ ```
61
+
62
+ 2. Run the engine with `rackup` or your favorite Ruby Webserver
63
+
64
+ Configuration
65
+ -------------
66
+
67
+ Ember CLI Deploy Rack can be configured in various ways:
68
+
69
+ 1. Via settings
70
+
71
+ ```ruby
72
+ engine = Ember::CLI::Deploy::Rack::Engine.new
73
+
74
+ # === Settings ====
75
+
76
+ # engine.settings.set :root, Dir.pwd
77
+ # engine.settings.set :key_prefix, 'ember-cli-deploy-rack:index'
78
+ # engine.settings.set :active_content_suffix, 'current-content'
79
+ # engine.settings.set :revision, { regexp: '^[0-9a-f]{32}$' }
80
+ # engine.settings.set :redis, { host: '127.0.0.1', ... }
81
+ # engine.settings.set :redis_client, proc { Redis.new settings.redis }
82
+ # engine.settings.set :debug, false
83
+ # ...
84
+
85
+ # === Logging ====
86
+
87
+ # log_dir = File.expand_path 'log'
88
+ #
89
+ # if File.directory? log_dir
90
+ # log_file = File.expand_path "#{engine.settings.environment}.log", log_dir
91
+ #
92
+ # logger = Logger.new log_file, File::WRONLY | File::APPEND | File::CREAT
93
+ # logger.level = Logger::ERROR
94
+ #
95
+ # engine.settings.set :logger, logger
96
+ # end
97
+
98
+ run engine
99
+ ```
100
+
101
+ 2. Via YAML configuration file
102
+
103
+ Just create a configuration file `config/settings.yml` and adjust properly, for an example see
104
+ [resources/config/settings.yml].
105
+
106
+ ### Options
107
+
108
+ #### Key Prefix
109
+
110
+ The prefix to be used for the Redis key under which file will be uploaded to Redis. The Redis key will be a combination
111
+ of the `key_prefix` and the `revision_key`. Typically this is the `project.name` property from the deployment context
112
+ and `:index` at the end. By default this option will be `ember-cli-deploy-rack:index`.
113
+
114
+ For more details, see https://github.com/ember-cli-deploy/ember-cli-deploy-redis#keyprefix.
115
+
116
+ #### Active Content Suffix
117
+
118
+ The suffix to be used for the Redis key under which the activated revision content will be stored in Redis. By default
119
+ this option will be `current-content`. This makes the default activated revision in Redis looks like: The `project.name`
120
+ property from the deployment and `:index:current-content` at the end.
121
+
122
+ For more details, see https://github.com/ember-cli-deploy/ember-cli-deploy-redis#activecontentsuffix.
123
+
124
+ #### Revision
125
+
126
+ #### Regexp
127
+
128
+ The regular expression to check the revision. By default this option will be `^[0-9a-f]{32}$`.
129
+
130
+ #### Redis
131
+
132
+ The options for the Redis client. For available options see [Redis::Client::DEFAULTS].
133
+
134
+ #### Debug
135
+
136
+ If enabled, debug information can be viewed under `/debug`. By default this option will be `false`.
137
+
138
+ Development
139
+ -----------
140
+
141
+ ### Run specs with [RSpec]
142
+
143
+ Run `rspec`.
144
+
145
+ or via [Guard]:
146
+
147
+ ```
148
+ $ guard -g spec
149
+ ```
150
+
151
+ ### See Test Coverage
152
+
153
+ Run `COVERAGE=true rspec`.
154
+
155
+ ### Run [RuboCop]
156
+
157
+ Run `rubocop`.
158
+
159
+ To run all specs and RuboCop altogether, run `rake`.
160
+
161
+ ### Rack
162
+
163
+ ```
164
+ $ rackup
165
+ ```
166
+
167
+ #### Thin
168
+
169
+ ```
170
+ $ thin -R config.ru -d start
171
+ $ thin stop
172
+ ```
173
+
174
+ Bug Reports
175
+ -----------
176
+
177
+ Github Issues are used for managing bug reports and feature requests. If you run into issues, please search the issues
178
+ and submit new problems [here].
179
+
180
+ Versioning
181
+ ----------
182
+
183
+ This library aims to adhere to [Semantic Versioning 2.0.0]. Violations of this scheme should be reported as bugs.
184
+ Specifically, if a minor or patch version is released that breaks backward compatibility, that version should be
185
+ immediately yanked and / or a new version should be immediately released that restores compatibility.
186
+
187
+ License
188
+ -------
189
+
190
+ Ember CLI Deploy Rack is released under the [MIT License (MIT)], see [LICENSE].
191
+
192
+ [Bundler]: http://bundler.io "The best way to manage a Ruby application's gems"
193
+ [Code Climate]: https://codeclimate.com/github/bitaculous/ember-cli-deploy-rack "Ember CLI Deploy Rack at Code Climate"
194
+ [Code Climate Status]: https://img.shields.io/codeclimate/github/bitaculous/ember-cli-deploy-rack.svg?style=flat "Code Climate Status"
195
+ [Ember CLI]: http://www.ember-cli.com "The command line interface for ambitious web applications."
196
+ [Ember CLI Deploy Rack]: https://bitaculous.github.io/ember-cli-deploy-rack/ "A Rack package to launch your Ember.js application into the Cloud."
197
+ [Ember CLI Deploy]: http://ember-cli.github.io/ember-cli-deploy "Simple, flexible deployment for your Ember app"
198
+ [ember-deploy-redis]: https://github.com/ember-cli-deploy/ember-cli-deploy-redis "An ember-cli-deploy plugin to upload index.html to a Redis store."
199
+ [Ember.js]: http://emberjs.com "A framework for creating ambitious web applications."
200
+ [Foreman]: http://ddollar.github.io/foreman "Manage Procfile-based applications"
201
+ [Gemnasium]: https://gemnasium.com/bitaculous/ember-cli-deploy-rack "Ember CLI Deploy Rack at Gemnasium"
202
+ [Gemnasium Status]: https://img.shields.io/gemnasium/bitaculous/ember-cli-deploy-rack.svg?style=flat "Gemnasium Status"
203
+ [Guard]: http://guardgem.org "A command line tool to easily handle events on file system modifications."
204
+ [here]: https://github.com/bitaculous/ember-cli-deploy-rack/issues "Github Issues"
205
+ [LICENSE]: https://raw.githubusercontent.com/bitaculous/ember-cli-deploy-rack/master/LICENSE "License"
206
+ [MIT License (MIT)]: http://opensource.org/licenses/MIT "The MIT License (MIT)"
207
+ [Rack]: http://rack.github.io "A Ruby Webserver Interface"
208
+ [Redis]: http://redis.io "An open source, BSD licensed, advanced key-value cache and store."
209
+ [Redis::Client::DEFAULTS]: https://github.com/redis/redis-rb/blob/master/lib/redis/client.rb#L8 "The redis-rb defaults"
210
+ [resources/config/settings.yml]: https://github.com/bitaculous/ember-cli-deploy-rack/blob/master/resources/config/settings.yml "Sample YAML configuration"
211
+ [RSpec]: http://rspec.info "Behaviour Driven Development for Ruby"
212
+ [RuboCop]: https://github.com/bbatsov/rubocop "A Ruby static code analyzer, based on the community Ruby style guide."
213
+ [Ruby]: https://www.ruby-lang.org "A dynamic, open source programming language with a focus on simplicity and productivity."
214
+ [Semantic Versioning 2.0.0]: http://semver.org "Semantic Versioning 2.0.0"
215
+ [Sinatra]: http://www.sinatrarb.com "A DSL for quickly creating web applications in Ruby with minimal effort."
216
+ [Test Coverage]: https://codeclimate.com/github/bitaculous/ember-cli-deploy-rack "Test Coverage (Code Climate)"
217
+ [Test Coverage Status]: https://img.shields.io/codeclimate/coverage/github/bitaculous/ember-cli-deploy-rack.svg?style=flat "Test Coverage Status"
218
+ [Travis CI]: https://travis-ci.org/bitaculous/ember-cli-deploy-rack "Ember CLI Deploy Rack at Travis CI"
219
+ [Travis CI Status]: https://img.shields.io/travis/bitaculous/ember-cli-deploy-rack.svg?style=flat "Travis CI Status"
@@ -0,0 +1,11 @@
1
+ require_relative 'rack/version'
2
+ require_relative 'rack/engine'
3
+
4
+ module Ember
5
+ module CLI
6
+ module Deploy
7
+ module Rack # :nodoc:
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,128 @@
1
+ require 'logger'
2
+ require 'redis'
3
+ require 'sinatra/base'
4
+ require 'sinatra/config_file'
5
+ require 'sinatra/custom_logger'
6
+ require 'sinatra/reloader'
7
+
8
+ module Ember
9
+ module CLI
10
+ module Deploy
11
+ module Rack # :nodoc:
12
+ # = Engine
13
+ #
14
+ # The engine class of `Ember::CLI::Deploy::Rack`, inherited from `Sinatra::Base`.
15
+ class Engine < Sinatra::Base
16
+ # === Constants ===
17
+
18
+ TRAIL = File.expand_path '../../../../../../', __FILE__
19
+ VIEWS = File.expand_path 'views', TRAIL
20
+ CONFIG = 'config/settings.yml'
21
+
22
+ KEY_PREFIX = 'ember-cli-deploy-rack:index'
23
+ ACTIVE_CONTENT_SUFFIX = 'current-content'
24
+ REVISION_REGEXP = '^[0-9a-f]{32}$'
25
+
26
+ # === Settings ===
27
+
28
+ set :root, TRAIL
29
+
30
+ set :views, VIEWS
31
+
32
+ set :key_prefix, KEY_PREFIX
33
+
34
+ set :active_content_suffix, ACTIVE_CONTENT_SUFFIX
35
+
36
+ set :revision, 'regexp' => REVISION_REGEXP
37
+
38
+ set :redis, proc {
39
+ defaults = Redis::Client::DEFAULTS.dup
40
+
41
+ defaults.keys.each do |key|
42
+ # Fill in defaults if needed
43
+ defaults[key] = defaults[key].call if defaults[key].respond_to? :call
44
+ end
45
+
46
+ defaults
47
+ }
48
+
49
+ set :redis_client, proc {
50
+ Redis.new settings.redis
51
+ }
52
+
53
+ set :debug, false
54
+
55
+ set :version, Ember::CLI::Deploy::Rack::VERSION
56
+
57
+ # === Extensions ===
58
+
59
+ register Sinatra::ConfigFile
60
+
61
+ config_file File.expand_path CONFIG
62
+
63
+ # === Helpers ===
64
+
65
+ helpers Sinatra::CustomLogger
66
+
67
+ # === Configuration ===
68
+
69
+ configure :development do
70
+ register Sinatra::Reloader
71
+ end
72
+
73
+ # === Routes ===
74
+
75
+ get '/' do
76
+ content_type 'text/html'
77
+
78
+ logger.debug 'Processing request for `/` route...'
79
+
80
+ index params[:revision]
81
+ end
82
+
83
+ get '/debug' do
84
+ if settings.debug
85
+ @id = 'debug'
86
+ @title = 'Debug'
87
+ @settings = settings
88
+
89
+ haml :debug
90
+ else
91
+ halt 403
92
+ end
93
+ end
94
+
95
+ # === Private ===
96
+
97
+ protected
98
+
99
+ def index(revision)
100
+ key = get_key revision
101
+
102
+ logger.debug "Getting content from Redis with key: `#{key}`..."
103
+
104
+ redis_client = settings.redis_client
105
+
106
+ redis_client.get(key) || halt(404)
107
+ end
108
+
109
+ def get_key(revision)
110
+ key = "#{settings.key_prefix}:#{settings.active_content_suffix}"
111
+
112
+ if revision
113
+ regexp = Regexp.new settings.revision['regexp'], 1
114
+
115
+ if revision =~ regexp
116
+ key = "#{settings.key_prefix}:#{revision}"
117
+ else
118
+ halt 400
119
+ end
120
+ end
121
+
122
+ key
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,9 @@
1
+ module Ember
2
+ module CLI
3
+ module Deploy
4
+ module Rack # :nodoc:
5
+ VERSION = '2.3.0'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env rake
2
+
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks.'
7
+ end
8
+
9
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new :spec
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'rubocop/rake_task'
4
+
5
+ RuboCop::RakeTask.new(:rubocop) do |task|
6
+ task.requires << 'rubocop-rspec'
7
+
8
+ # Don't abort Rake on failure.
9
+ task.fail_on_error = false
10
+ end
@@ -0,0 +1,22 @@
1
+ # The prefix to be used for the Redis key under which file will be uploaded to Redis. The Redis key will be a
2
+ # combination of the `key_prefix` and the `revision_key`. Typically this is the `project.name` property from the
3
+ # deployment context and `:index` at the end. By default this option will be `ember-cli-deploy-rack:index`.
4
+ # For more details, see <https://github.com/ember-cli-deploy/ember-cli-deploy-redis#keyprefix>.
5
+ key_prefix: 'ember-cli-deploy-rack:index'
6
+
7
+ # The suffix to be used for the Redis key under which the activated revision content will be stored in Redis. By default
8
+ # this option will be `current-content`. This makes the default activated revision in Redis looks like:
9
+ # The `project.name` property from the deployment and `:index:current-content` at the end.
10
+ # For more details, see <https://github.com/ember-cli-deploy/ember-cli-deploy-redis#activecontentsuffix>.
11
+ active_content_suffix: 'current-content'
12
+
13
+ revision:
14
+ # The regular expression to check the revision. By default this option will be `^[0-9a-f]{32}$`.
15
+ regexp: '^[0-9a-f]{32}$'
16
+
17
+ redis:
18
+ # For available options see `Redis::Client::DEFAULTS`.
19
+ url: 'redis://<PASSWORD>@<HOST>:<PORT>/<DATABASE>'
20
+
21
+ # If enabled, debug information can be viewed under `/debug`. By default this option will be `false`.
22
+ debug: false
@@ -0,0 +1,45 @@
1
+ require 'rack/test'
2
+
3
+ root = File.expand_path '../../', __FILE__
4
+
5
+ # Configure the Rack environment.
6
+ ENV['RACK_ENV'] ||= 'test'
7
+
8
+ # Require the test object.
9
+ require 'ember/cli/deploy/rack'
10
+
11
+ # Define RSpec mixin.
12
+ module RSpecMixin
13
+ include Rack::Test::Methods
14
+
15
+ def app
16
+ Ember::CLI::Deploy::Rack::Engine
17
+ end
18
+
19
+ def fixtures
20
+ File.expand_path '../fixtures', __FILE__
21
+ end
22
+ end
23
+
24
+ # Require the spec helper.
25
+ require 'spec_helper'
26
+
27
+ # Add additional requires below this line.
28
+
29
+ # Requires supporting Ruby files with custom matchers, macros etc. in `spec/support` and its subdirectories. Files
30
+ # matching `spec/**/*_spec.rb` are run as spec files by default. This means that files in `spec/support` that end in
31
+ # `_spec.rb` will both be required and run as specs, causing the specs to be run twice. It is recommended that you do
32
+ # not name files matching this glob to end with `_spec.rb`. You can configure this pattern with the `--pattern` option
33
+ # on the command line or in `~/.rspec`, `.rspec` or `.rspec-local`.
34
+
35
+ # The following line is provided for convenience purposes. It has the downside of increasing the boot-up time by
36
+ # auto-requiring all files in the `support` directory. Alternatively, in the individual `*_spec.rb` files, manually
37
+ # require only the support files necessary.
38
+ support = File.expand_path 'spec/support', root
39
+
40
+ Dir["#{support}/**/*.rb"].each { |file| require file }
41
+
42
+ RSpec.configure do |config|
43
+ # Include the above defined RSpec mixin.
44
+ config.include RSpecMixin
45
+ end
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Current content revision (`current-content`)</title>
5
+
6
+ <meta charset="utf-8" />
7
+
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
+
10
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
11
+ </head>
12
+
13
+ <body>
14
+ <!-- This file lives in `spec/fixtures/ember/cli/deploy/rack/engine/revision/current.html` -->
15
+ <h1>Current content revision (`current-content`)</h1>
16
+ </body>
17
+ </html>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Revision `e56b0f2850be071697ab61c41ce8f3c0`</title>
5
+
6
+ <meta charset="utf-8" />
7
+
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
+
10
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
11
+ </head>
12
+
13
+ <body>
14
+ <!-- This file lives in `spec/fixtures/ember/cli/deploy/rack/engine/revision/e56b0f2850be071697ab61c41ce8f3c0.html` -->
15
+ <h1>Revision `e56b0f2850be071697ab61c41ce8f3c0`</h1>
16
+ </body>
17
+ </html>
@@ -0,0 +1,25 @@
1
+ RSpec.describe Ember::CLI::Deploy::Rack::Engine do
2
+ context 'debug is enabled' do
3
+ describe '/debug' do
4
+ it 'renders debug information' do
5
+ app.settings.debug = true
6
+
7
+ get '/debug'
8
+
9
+ expect(last_response).to be_ok
10
+ end
11
+ end
12
+ end
13
+
14
+ context 'debug is disabled' do
15
+ describe '/debug' do
16
+ it 'response with 403' do
17
+ app.settings.debug = false
18
+
19
+ get '/debug'
20
+
21
+ expect(last_response.status).to eq 403
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,52 @@
1
+ RSpec.describe Ember::CLI::Deploy::Rack::Engine do
2
+ let(:key_prefix) { app.settings.key_prefix }
3
+ let(:redis) { app.settings.redis_client }
4
+
5
+ it 'response with 400 when revision is not valid' do
6
+ revision = 'invalid-revision'
7
+
8
+ get '/', revision: revision
9
+
10
+ expect(last_response.status).to eq 400
11
+ end
12
+
13
+ context 'data available' do
14
+ describe '/' do
15
+ it 'returns the `current-content` revision as default' do
16
+ revision = 'current-content'
17
+ fixture = File.expand_path "ember/cli/deploy/rack/engine/revisions/#{revision}.html", fixtures
18
+ html = IO.read fixture
19
+
20
+ redis.set "#{key_prefix}:#{revision}", html
21
+
22
+ get '/'
23
+
24
+ expect(last_response).to be_ok
25
+ expect(last_response.body).to eq html
26
+ end
27
+
28
+ it 'returns a specific revision' do
29
+ revision = 'e56b0f2850be071697ab61c41ce8f3c0'
30
+ fixture = File.expand_path "ember/cli/deploy/rack/engine/revisions/#{revision}.html", fixtures
31
+ html = IO.read fixture
32
+
33
+ redis.set "#{key_prefix}:#{revision}", html
34
+
35
+ get '/', revision: revision
36
+
37
+ expect(last_response).to be_ok
38
+ expect(last_response.body).to eq html
39
+ end
40
+ end
41
+ end
42
+
43
+ context 'no data available' do
44
+ describe '/' do
45
+ it 'response with 404' do
46
+ get '/'
47
+
48
+ expect(last_response.status).to eq 404
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,71 @@
1
+ # Conventionally, all specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. The `.rspec` file
2
+ # contains `--require ember_cli_deploy_rack_helper` which will cause this file to always be loaded, without a need to
3
+ # explicitly require it in any files.
4
+ #
5
+ # Given that it is always loaded, you are encouraged to keep this file as light-weight as possible. Requiring
6
+ # heavyweight dependencies from this file will add to the boot time of your test suite on EVERY test run, even for an
7
+ # individual file that may not need all of that loaded. Instead, consider making a separate helper file that requires
8
+ # the additional dependencies and performs the additional setup, and require it from the spec files that actually need
9
+ # it.
10
+ #
11
+ # The `.rspec` file also contains a few flags that are not defaults but that users commonly want.
12
+ #
13
+ # See <http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration> for more information.
14
+
15
+ RSpec.configure do |config|
16
+ # RSpec Expectations configuration goes here. You can use an alternate assertion / expectation library such as `wrong`
17
+ # or the `stdlib/minitest` assertions if you prefer.
18
+ config.expect_with :rspec do |expectations|
19
+ # This option will default to `true` in RSpec 4. It makes the `description` and `failure_message` of custom matchers
20
+ # include text for helper methods defined using `chain`.
21
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
22
+ end
23
+
24
+ # RSpec Mocks configuration goes here. You can use an alternate test double library (such as `bogus` or `mocha`) by
25
+ # changing the `mock_with` option here.
26
+ config.mock_with :rspec do |mocks|
27
+ # Prevents you from mocking or stubbing a method that does not exist on a real object. This is generally recommended,
28
+ # and will default to `true` in RSpec 4.
29
+ mocks.verify_partial_doubles = true
30
+ end
31
+
32
+ # The settings below are suggested to provide a good initial experience with RSpec, but feel free to customize to your
33
+ # heart's content.
34
+
35
+ # These two settings work together to allow you to limit a spec run to individual examples or groups you care about by
36
+ # tagging them with `:focus` metadata. When nothing is tagged with `:focus`, all examples get run.
37
+ config.filter_run :focus
38
+ config.run_all_when_everything_filtered = true
39
+
40
+ # Allows RSpec to persist some state between runs in order to support the `--only-failures` and `--next-failure` CLI
41
+ # options. We recommend you configure your source control system to ignore this file.
42
+ # config.example_status_persistence_file_path = 'spec/examples.txt'
43
+
44
+ # Limits the available syntax to the non-monkey patched syntax that is recommended. For more details, see:
45
+ #
46
+ # - <http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax>
47
+ # - <http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax>
48
+ # - <http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching>
49
+ config.disable_monkey_patching!
50
+
51
+ # Many RSpec users commonly either run the entire suite or an individual file, and it's useful to allow more verbose
52
+ # output when running an individual spec file.
53
+ if config.files_to_run.one?
54
+ # Use the documentation formatter for detailed output, unless a formatter has already been configured (e.g. via a
55
+ # command-line flag).
56
+ config.default_formatter = 'doc'
57
+ end
58
+
59
+ # Print the 10 slowest examples and example groups at the end of the spec run, to help surface which specs are running
60
+ # particularly slow.
61
+ config.profile_examples = 10
62
+
63
+ # Run specs in random order to surface order dependencies. If you find an order dependency and want to debug it, you
64
+ # can fix the order by providing the seed (`--seed 1234`), which is printed after each run.
65
+ config.order = :random
66
+
67
+ # Seed global randomization in this process using the `--seed` CLI option. Setting this allows you to use `--seed` to
68
+ # deterministically reproduce test failures related to randomization by passing the same `--seed` value as the one
69
+ # that triggered the failure.
70
+ Kernel.srand config.seed
71
+ end
@@ -0,0 +1,17 @@
1
+ require 'database_cleaner'
2
+
3
+ RSpec.configure do |config|
4
+ config.before(:suite) do
5
+ DatabaseCleaner[:redis, { connection: :test }].strategy = :truncation
6
+
7
+ DatabaseCleaner[:redis].clean_with :truncation
8
+ end
9
+
10
+ config.before(:each) do
11
+ DatabaseCleaner[:redis].start
12
+ end
13
+
14
+ config.after(:each) do
15
+ DatabaseCleaner[:redis].clean
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ require 'simplecov'
metadata ADDED
@@ -0,0 +1,187 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ember-cli-deploy-rack
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Maik Kempe
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sinatra
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.6
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.4'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.6
33
+ - !ruby/object:Gem::Dependency
34
+ name: sinatra-contrib
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.4'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.4.6
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.4'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.4.6
53
+ - !ruby/object:Gem::Dependency
54
+ name: haml
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.0'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 4.0.7
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 4.0.7
73
+ - !ruby/object:Gem::Dependency
74
+ name: redis
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '3.2'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 3.2.2
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 3.2.2
93
+ - !ruby/object:Gem::Dependency
94
+ name: rake
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '10.4'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 10.4.2
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '10.4'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 10.4.2
113
+ - !ruby/object:Gem::Dependency
114
+ name: rspec
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.4'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 3.4.0
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.4'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.4.0
133
+ description:
134
+ email: mkempe@bitaculous.com
135
+ executables: []
136
+ extensions: []
137
+ extra_rdoc_files:
138
+ - CHANGELOG.md
139
+ - CONTRIBUTING.md
140
+ - LICENSE
141
+ - README.md
142
+ files:
143
+ - CHANGELOG.md
144
+ - CONTRIBUTING.md
145
+ - LICENSE
146
+ - README.md
147
+ - lib/ember/cli/deploy/rack.rb
148
+ - lib/ember/cli/deploy/rack/engine.rb
149
+ - lib/ember/cli/deploy/rack/version.rb
150
+ - lib/tasks/bundler.rake
151
+ - lib/tasks/rspec.rake
152
+ - lib/tasks/rubocop.rake
153
+ - resources/config/settings.yml
154
+ - spec/ember_cli_deploy_rack_helper.rb
155
+ - spec/fixtures/ember/cli/deploy/rack/engine/revisions/current-content.html
156
+ - spec/fixtures/ember/cli/deploy/rack/engine/revisions/e56b0f2850be071697ab61c41ce8f3c0.html
157
+ - spec/integration/ember/cli/deploy/rack/engine/views/debug_spec.rb
158
+ - spec/integration/ember/cli/deploy/rack/engine_spec.rb
159
+ - spec/spec_helper.rb
160
+ - spec/support/database_cleaner.rb
161
+ - spec/support/simplecov.rb
162
+ homepage: https://bitaculous.github.io/ember-cli-deploy-rack/
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '2.2'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '2.4'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.5.1
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: A Rack package to launch your Ember.js application into the Cloud.
186
+ test_files: []
187
+ has_rdoc: