utter_events 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +12 -0
- data/Gemfile +4 -0
- data/Guardfile +70 -0
- data/README.md +110 -0
- data/Rakefile +1 -0
- data/bin/console +8 -0
- data/bin/setup +8 -0
- data/lib/utter.rb +47 -0
- data/lib/utter/version.rb +3 -0
- data/sample_rails_app/.gitignore +17 -0
- data/sample_rails_app/Gemfile +17 -0
- data/sample_rails_app/Gemfile.lock +157 -0
- data/sample_rails_app/README.rdoc +28 -0
- data/sample_rails_app/Rakefile +6 -0
- data/sample_rails_app/app/assets/images/.keep +0 -0
- data/sample_rails_app/app/assets/javascripts/application.js +15 -0
- data/sample_rails_app/app/assets/javascripts/articles.js +2 -0
- data/sample_rails_app/app/assets/javascripts/comments.js +2 -0
- data/sample_rails_app/app/assets/javascripts/welcome.js +2 -0
- data/sample_rails_app/app/assets/stylesheets/application.css +15 -0
- data/sample_rails_app/app/assets/stylesheets/articles.scss +3 -0
- data/sample_rails_app/app/assets/stylesheets/comments.scss +3 -0
- data/sample_rails_app/app/assets/stylesheets/welcome.scss +3 -0
- data/sample_rails_app/app/controllers/application_controller.rb +5 -0
- data/sample_rails_app/app/controllers/articles_controller.rb +51 -0
- data/sample_rails_app/app/controllers/comments_controller.rb +19 -0
- data/sample_rails_app/app/controllers/concerns/.keep +0 -0
- data/sample_rails_app/app/controllers/welcome_controller.rb +4 -0
- data/sample_rails_app/app/helpers/application_helper.rb +2 -0
- data/sample_rails_app/app/helpers/articles_helper.rb +2 -0
- data/sample_rails_app/app/helpers/comments_helper.rb +2 -0
- data/sample_rails_app/app/helpers/welcome_helper.rb +2 -0
- data/sample_rails_app/app/mailers/.keep +0 -0
- data/sample_rails_app/app/models/.keep +0 -0
- data/sample_rails_app/app/models/article.rb +5 -0
- data/sample_rails_app/app/models/comment.rb +3 -0
- data/sample_rails_app/app/models/concerns/.keep +0 -0
- data/sample_rails_app/app/views/articles/_form.html.erb +31 -0
- data/sample_rails_app/app/views/articles/edit.html.erb +5 -0
- data/sample_rails_app/app/views/articles/index.html.erb +21 -0
- data/sample_rails_app/app/views/articles/new.html.erb +5 -0
- data/sample_rails_app/app/views/articles/show.html.erb +18 -0
- data/sample_rails_app/app/views/comments/_comment.html.erb +15 -0
- data/sample_rails_app/app/views/comments/_form.html.erb +13 -0
- data/sample_rails_app/app/views/layouts/application.html.erb +14 -0
- data/sample_rails_app/app/views/welcome/index.html.erb +2 -0
- data/sample_rails_app/bin/bundle +3 -0
- data/sample_rails_app/bin/rails +9 -0
- data/sample_rails_app/bin/rake +9 -0
- data/sample_rails_app/bin/setup +29 -0
- data/sample_rails_app/bin/spring +15 -0
- data/sample_rails_app/config.ru +4 -0
- data/sample_rails_app/config/application.rb +35 -0
- data/sample_rails_app/config/boot.rb +3 -0
- data/sample_rails_app/config/database.yml +25 -0
- data/sample_rails_app/config/environment.rb +5 -0
- data/sample_rails_app/config/environments/development.rb +41 -0
- data/sample_rails_app/config/environments/production.rb +79 -0
- data/sample_rails_app/config/environments/test.rb +42 -0
- data/sample_rails_app/config/initializers/assets.rb +11 -0
- data/sample_rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/sample_rails_app/config/initializers/cookies_serializer.rb +3 -0
- data/sample_rails_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/sample_rails_app/config/initializers/inflections.rb +16 -0
- data/sample_rails_app/config/initializers/mime_types.rb +4 -0
- data/sample_rails_app/config/initializers/session_store.rb +3 -0
- data/sample_rails_app/config/initializers/utter.rb +8 -0
- data/sample_rails_app/config/initializers/wrap_parameters.rb +14 -0
- data/sample_rails_app/config/locales/en.yml +23 -0
- data/sample_rails_app/config/routes.rb +7 -0
- data/sample_rails_app/config/secrets.yml +22 -0
- data/sample_rails_app/db/migrate/20160218085536_create_articles.rb +10 -0
- data/sample_rails_app/db/migrate/20160222061605_create_comments.rb +11 -0
- data/sample_rails_app/db/schema.rb +33 -0
- data/sample_rails_app/db/seeds.rb +7 -0
- data/sample_rails_app/lib/assets/.keep +0 -0
- data/sample_rails_app/lib/tasks/.keep +0 -0
- data/sample_rails_app/log/.keep +0 -0
- data/sample_rails_app/public/404.html +67 -0
- data/sample_rails_app/public/422.html +67 -0
- data/sample_rails_app/public/500.html +66 -0
- data/sample_rails_app/public/favicon.ico +0 -0
- data/sample_rails_app/public/robots.txt +5 -0
- data/sample_rails_app/vendor/assets/javascripts/.keep +0 -0
- data/sample_rails_app/vendor/assets/stylesheets/.keep +0 -0
- data/utter.gemspec +31 -0
- metadata +221 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a7f9364791c5599be45a3537b0ec6fdcb4070628
|
4
|
+
data.tar.gz: 8acd1e350b764ca069915b659fa4f23d3b371f7a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dc4044d8813310cf6653e1d39702c8260f37b1c502f50624990f8c15a3070c5a8593cd9796aa33a17382e0e8a0f00b2b5319b6b13760c11648de333295a6c4b0
|
7
|
+
data.tar.gz: 0617c8f3578bf306b4c0e9929edea1371095f99fc2d3b20e6e89b6bf920381f9a10b1d246f6a94d4f9831f31b5b3215aabd77eb33aa4c7fea2f8600480cdc8c4
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0
|
data/.travis.yml
ADDED
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
This document provides community guidelines for a safe, respectful, productive, and collaborative place for any person who is willing to contribute to the Ruby community. It applies to all “collaborative space”, which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.).
|
4
|
+
|
5
|
+
* Participants will be tolerant of opposing views.
|
6
|
+
* Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks.
|
7
|
+
* When interpreting the words and actions of others, participants should always assume good intentions.
|
8
|
+
* Behaviour which can be reasonably considered harassment will not be tolerated.
|
9
|
+
|
10
|
+
This Code of Conduct is adapted from the [Ruby Community Conduct Guideline][coc].
|
11
|
+
|
12
|
+
[coc]: https://www.ruby-lang.org/en/conduct/
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
## Uncomment and set this to only include directories you want to watch
|
5
|
+
# directories %w(app lib config test spec features) \
|
6
|
+
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
7
|
+
|
8
|
+
## Note: if you are using the `directories` clause above and you are not
|
9
|
+
## watching the project directory ('.'), then you will want to move
|
10
|
+
## the Guardfile to a watched dir and symlink it back, e.g.
|
11
|
+
#
|
12
|
+
# $ mkdir config
|
13
|
+
# $ mv Guardfile config/
|
14
|
+
# $ ln -s config/Guardfile .
|
15
|
+
#
|
16
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
17
|
+
|
18
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
19
|
+
# rspec may be run, below are examples of the most common uses.
|
20
|
+
# * bundler: 'bundle exec rspec'
|
21
|
+
# * bundler binstubs: 'bin/rspec'
|
22
|
+
# * spring: 'bin/rspec' (This will use spring if running and you have
|
23
|
+
# installed the spring binstubs per the docs)
|
24
|
+
# * zeus: 'zeus rspec' (requires the server to be started separately)
|
25
|
+
# * 'just' rspec: 'rspec'
|
26
|
+
|
27
|
+
guard :rspec, cmd: "bundle exec rspec" do
|
28
|
+
require "guard/rspec/dsl"
|
29
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
30
|
+
|
31
|
+
# Feel free to open issues for suggestions and improvements
|
32
|
+
|
33
|
+
# RSpec files
|
34
|
+
rspec = dsl.rspec
|
35
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
36
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
37
|
+
watch(rspec.spec_files)
|
38
|
+
|
39
|
+
# Ruby files
|
40
|
+
ruby = dsl.ruby
|
41
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
42
|
+
|
43
|
+
# Rails files
|
44
|
+
rails = dsl.rails(view_extensions: %w(erb haml slim))
|
45
|
+
dsl.watch_spec_files_for(rails.app_files)
|
46
|
+
dsl.watch_spec_files_for(rails.views)
|
47
|
+
|
48
|
+
watch(rails.controllers) do |m|
|
49
|
+
[
|
50
|
+
rspec.spec.("routing/#{m[1]}_routing"),
|
51
|
+
rspec.spec.("controllers/#{m[1]}_controller"),
|
52
|
+
rspec.spec.("acceptance/#{m[1]}")
|
53
|
+
]
|
54
|
+
end
|
55
|
+
|
56
|
+
# Rails config changes
|
57
|
+
watch(rails.spec_helper) { rspec.spec_dir }
|
58
|
+
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
|
59
|
+
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
|
60
|
+
|
61
|
+
# Capybara features specs
|
62
|
+
watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
|
63
|
+
watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
|
64
|
+
|
65
|
+
# Turnip features and steps
|
66
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
67
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
|
68
|
+
Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
|
69
|
+
end
|
70
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
# Utter
|
2
|
+
|
3
|
+
## Installation
|
4
|
+
|
5
|
+
Add this line to your application's Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'utter'
|
9
|
+
```
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install utter
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
### Sending Events
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
require "utter"
|
25
|
+
|
26
|
+
# mixin instance methods
|
27
|
+
class UserRegistration
|
28
|
+
include Utter
|
29
|
+
|
30
|
+
def register_user(user)
|
31
|
+
# code goes here
|
32
|
+
# ...
|
33
|
+
|
34
|
+
utter(:user_registered, payload: {
|
35
|
+
username: user.name,
|
36
|
+
registration_date: user.created_at
|
37
|
+
})
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# mixin class methods
|
42
|
+
class Configuration
|
43
|
+
extend Utter
|
44
|
+
|
45
|
+
def self.user_account_endpoint(subdomain)
|
46
|
+
# code goes here
|
47
|
+
#...
|
48
|
+
|
49
|
+
utter(:user_account_endpoint_called, payload: {
|
50
|
+
subdomain: subdomain
|
51
|
+
})
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
If you'd like to have access to both instance methods and class methods, you can both `include` and `extend` `Utter` like this:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
class IncludeAndExtend
|
60
|
+
include Utter
|
61
|
+
extend Utter
|
62
|
+
|
63
|
+
# now you can use `#utter` in both instance methods and class methods
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
Take note however that doing both an `include` and an `extend` may be a sign that your class is doing too much, and may benefit from a refactoring and separation of concerns.
|
68
|
+
|
69
|
+
### Consuming Events
|
70
|
+
|
71
|
+
`Utter` has a default Global Events Table where it stores events emitted by the calling objects. This events table also mixes in the `Observable` module from the Ruby Standard Library so you can do something like:
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
class Watcher
|
75
|
+
def update(object_id, event, payload)
|
76
|
+
# the events table will call `#update` whenever there's an event that is emitted
|
77
|
+
# ...
|
78
|
+
send_to_amazon_kinesis(event, payload.merge(meta: {object_id: object_id, sent_at: Time.now}))
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
Utter::GLOBAL_EVENTS_TABLE.add_observer(watcher)
|
83
|
+
```
|
84
|
+
|
85
|
+
If you don't want to observe the events table, there's also an experimental syntax that's inspired by https://github.com/shokai/event_emitter and NodeJS.
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
user_registration = UserRegistration.new # see above for the class definition
|
89
|
+
|
90
|
+
# ... call the method that emits an event
|
91
|
+
user_registration.register_user(user)
|
92
|
+
|
93
|
+
# ... somewhere else
|
94
|
+
user.on :user_registered do |payload|
|
95
|
+
puts "#{data[:username]} was registered on #{data[:registration_date]}"
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
99
|
+
Note that this doesn't work on events that are called from class methods; you will need to observe the Global Events Table object in those cases.
|
100
|
+
|
101
|
+
## Development
|
102
|
+
|
103
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
104
|
+
|
105
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
106
|
+
|
107
|
+
## Contributing
|
108
|
+
|
109
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/parasquid/utter. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://github.com/parasquid/utter/blob/master/CODE_OF_CONDUCT.md) code of conduct.
|
110
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/console
ADDED
data/bin/setup
ADDED
data/lib/utter.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require "utter/version"
|
2
|
+
require "observer"
|
3
|
+
|
4
|
+
module Utter
|
5
|
+
class EventsTable
|
6
|
+
extend Forwardable
|
7
|
+
def_delegators :@backing_hash, :[]
|
8
|
+
|
9
|
+
include Observable
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@backing_hash = Hash.new { |hash, key|
|
13
|
+
hash[key] = Hash.new { |h, k|
|
14
|
+
h[k] = []
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def process_event(object_id, event, payload)
|
20
|
+
@backing_hash[object_id][event].compact!
|
21
|
+
@backing_hash[object_id][event].each do |block|
|
22
|
+
block.call(payload)
|
23
|
+
end
|
24
|
+
changed
|
25
|
+
notify_observers(object_id, event, payload)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
private_constant :EventsTable
|
29
|
+
|
30
|
+
GLOBAL_EVENTS_TABLE = EventsTable.new
|
31
|
+
|
32
|
+
def utter(event, payload=nil)
|
33
|
+
events.process_event(self.object_id, event.to_sym, payload)
|
34
|
+
end
|
35
|
+
|
36
|
+
def on(event, &block)
|
37
|
+
events[self.object_id][event.to_sym].push block
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def events
|
43
|
+
GLOBAL_EVENTS_TABLE
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
6
|
+
|
7
|
+
# Ignore bundler config.
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the default SQLite database.
|
11
|
+
/db/*.sqlite3
|
12
|
+
/db/*.sqlite3-journal
|
13
|
+
|
14
|
+
# Ignore all logfiles and tempfiles.
|
15
|
+
/log/*
|
16
|
+
!/log/.keep
|
17
|
+
/tmp
|
@@ -0,0 +1,17 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rails', '4.2.5.1'
|
4
|
+
gem 'sqlite3'
|
5
|
+
gem 'sass-rails', '~> 5.0'
|
6
|
+
gem 'uglifier', '>= 1.3.0'
|
7
|
+
gem 'jquery-rails'
|
8
|
+
gem 'jbuilder', '~> 2.0'
|
9
|
+
gem 'sdoc', '~> 0.4.0', group: :doc
|
10
|
+
|
11
|
+
group :development, :test do
|
12
|
+
gem 'byebug'
|
13
|
+
gem 'web-console', '~> 2.0'
|
14
|
+
gem "quiet_assets"
|
15
|
+
end
|
16
|
+
|
17
|
+
gem "utter", path: "../"
|
@@ -0,0 +1,157 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../
|
3
|
+
specs:
|
4
|
+
utter (0.1.0)
|
5
|
+
gem_config (= 0.3.1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
actionmailer (4.2.5.1)
|
11
|
+
actionpack (= 4.2.5.1)
|
12
|
+
actionview (= 4.2.5.1)
|
13
|
+
activejob (= 4.2.5.1)
|
14
|
+
mail (~> 2.5, >= 2.5.4)
|
15
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
16
|
+
actionpack (4.2.5.1)
|
17
|
+
actionview (= 4.2.5.1)
|
18
|
+
activesupport (= 4.2.5.1)
|
19
|
+
rack (~> 1.6)
|
20
|
+
rack-test (~> 0.6.2)
|
21
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
22
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
23
|
+
actionview (4.2.5.1)
|
24
|
+
activesupport (= 4.2.5.1)
|
25
|
+
builder (~> 3.1)
|
26
|
+
erubis (~> 2.7.0)
|
27
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
28
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
29
|
+
activejob (4.2.5.1)
|
30
|
+
activesupport (= 4.2.5.1)
|
31
|
+
globalid (>= 0.3.0)
|
32
|
+
activemodel (4.2.5.1)
|
33
|
+
activesupport (= 4.2.5.1)
|
34
|
+
builder (~> 3.1)
|
35
|
+
activerecord (4.2.5.1)
|
36
|
+
activemodel (= 4.2.5.1)
|
37
|
+
activesupport (= 4.2.5.1)
|
38
|
+
arel (~> 6.0)
|
39
|
+
activesupport (4.2.5.1)
|
40
|
+
i18n (~> 0.7)
|
41
|
+
json (~> 1.7, >= 1.7.7)
|
42
|
+
minitest (~> 5.1)
|
43
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
44
|
+
tzinfo (~> 1.1)
|
45
|
+
arel (6.0.3)
|
46
|
+
binding_of_caller (0.7.2)
|
47
|
+
debug_inspector (>= 0.0.1)
|
48
|
+
builder (3.2.2)
|
49
|
+
byebug (8.2.2)
|
50
|
+
concurrent-ruby (1.0.0)
|
51
|
+
debug_inspector (0.0.2)
|
52
|
+
erubis (2.7.0)
|
53
|
+
execjs (2.6.0)
|
54
|
+
gem_config (0.3.1)
|
55
|
+
globalid (0.3.6)
|
56
|
+
activesupport (>= 4.1.0)
|
57
|
+
i18n (0.7.0)
|
58
|
+
jbuilder (2.4.1)
|
59
|
+
activesupport (>= 3.0.0, < 5.1)
|
60
|
+
multi_json (~> 1.2)
|
61
|
+
jquery-rails (4.1.0)
|
62
|
+
rails-dom-testing (~> 1.0)
|
63
|
+
railties (>= 4.2.0)
|
64
|
+
thor (>= 0.14, < 2.0)
|
65
|
+
json (1.8.3)
|
66
|
+
loofah (2.0.3)
|
67
|
+
nokogiri (>= 1.5.9)
|
68
|
+
mail (2.6.3)
|
69
|
+
mime-types (>= 1.16, < 3)
|
70
|
+
mime-types (2.99)
|
71
|
+
mini_portile2 (2.0.0)
|
72
|
+
minitest (5.8.4)
|
73
|
+
multi_json (1.11.2)
|
74
|
+
nokogiri (1.6.7.2)
|
75
|
+
mini_portile2 (~> 2.0.0.rc2)
|
76
|
+
quiet_assets (1.1.0)
|
77
|
+
railties (>= 3.1, < 5.0)
|
78
|
+
rack (1.6.4)
|
79
|
+
rack-test (0.6.3)
|
80
|
+
rack (>= 1.0)
|
81
|
+
rails (4.2.5.1)
|
82
|
+
actionmailer (= 4.2.5.1)
|
83
|
+
actionpack (= 4.2.5.1)
|
84
|
+
actionview (= 4.2.5.1)
|
85
|
+
activejob (= 4.2.5.1)
|
86
|
+
activemodel (= 4.2.5.1)
|
87
|
+
activerecord (= 4.2.5.1)
|
88
|
+
activesupport (= 4.2.5.1)
|
89
|
+
bundler (>= 1.3.0, < 2.0)
|
90
|
+
railties (= 4.2.5.1)
|
91
|
+
sprockets-rails
|
92
|
+
rails-deprecated_sanitizer (1.0.3)
|
93
|
+
activesupport (>= 4.2.0.alpha)
|
94
|
+
rails-dom-testing (1.0.7)
|
95
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
96
|
+
nokogiri (~> 1.6.0)
|
97
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
98
|
+
rails-html-sanitizer (1.0.3)
|
99
|
+
loofah (~> 2.0)
|
100
|
+
railties (4.2.5.1)
|
101
|
+
actionpack (= 4.2.5.1)
|
102
|
+
activesupport (= 4.2.5.1)
|
103
|
+
rake (>= 0.8.7)
|
104
|
+
thor (>= 0.18.1, < 2.0)
|
105
|
+
rake (10.5.0)
|
106
|
+
rdoc (4.2.2)
|
107
|
+
json (~> 1.4)
|
108
|
+
sass (3.4.21)
|
109
|
+
sass-rails (5.0.4)
|
110
|
+
railties (>= 4.0.0, < 5.0)
|
111
|
+
sass (~> 3.1)
|
112
|
+
sprockets (>= 2.8, < 4.0)
|
113
|
+
sprockets-rails (>= 2.0, < 4.0)
|
114
|
+
tilt (>= 1.1, < 3)
|
115
|
+
sdoc (0.4.1)
|
116
|
+
json (~> 1.7, >= 1.7.7)
|
117
|
+
rdoc (~> 4.0)
|
118
|
+
sprockets (3.5.2)
|
119
|
+
concurrent-ruby (~> 1.0)
|
120
|
+
rack (> 1, < 3)
|
121
|
+
sprockets-rails (3.0.1)
|
122
|
+
actionpack (>= 4.0)
|
123
|
+
activesupport (>= 4.0)
|
124
|
+
sprockets (>= 3.0.0)
|
125
|
+
sqlite3 (1.3.11)
|
126
|
+
thor (0.19.1)
|
127
|
+
thread_safe (0.3.5)
|
128
|
+
tilt (2.0.2)
|
129
|
+
tzinfo (1.2.2)
|
130
|
+
thread_safe (~> 0.1)
|
131
|
+
uglifier (2.7.2)
|
132
|
+
execjs (>= 0.3.0)
|
133
|
+
json (>= 1.8.0)
|
134
|
+
web-console (2.3.0)
|
135
|
+
activemodel (>= 4.0)
|
136
|
+
binding_of_caller (>= 0.7.2)
|
137
|
+
railties (>= 4.0)
|
138
|
+
sprockets-rails (>= 2.0, < 4.0)
|
139
|
+
|
140
|
+
PLATFORMS
|
141
|
+
ruby
|
142
|
+
|
143
|
+
DEPENDENCIES
|
144
|
+
byebug
|
145
|
+
jbuilder (~> 2.0)
|
146
|
+
jquery-rails
|
147
|
+
quiet_assets
|
148
|
+
rails (= 4.2.5.1)
|
149
|
+
sass-rails (~> 5.0)
|
150
|
+
sdoc (~> 0.4.0)
|
151
|
+
sqlite3
|
152
|
+
uglifier (>= 1.3.0)
|
153
|
+
utter!
|
154
|
+
web-console (~> 2.0)
|
155
|
+
|
156
|
+
BUNDLED WITH
|
157
|
+
1.11.2
|