routler 0.0.2
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +10 -0
- data/bin/routler +39 -0
- data/lib/routler.rb +10 -0
- data/lib/routler/consumer.rb +18 -0
- data/lib/routler/controller.rb +17 -0
- data/lib/routler/formatters/csv.rb +25 -0
- data/lib/routler/parser.rb +56 -0
- data/lib/routler/presenter.rb +13 -0
- data/lib/routler/stat_builder.rb +26 -0
- data/lib/routler/version.rb +3 -0
- data/routler.gemspec +26 -0
- data/spec/routler/consumer_spec.rb +16 -0
- data/spec/routler/controller_spec.rb +30 -0
- data/spec/routler/formatters/csv_spec.rb +31 -0
- data/spec/routler/parser_spec.rb +75 -0
- data/spec/routler/stat_builder_spec.rb +48 -0
- data/spec/routler/version_spec.rb +9 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/routes.txt +21 -0
- metadata +133 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 97c46f72c4a9cc001d8000f0da27c56183f9c142
|
4
|
+
data.tar.gz: 8e6e8b1a53e8d213362440189c29d3bad3130ec9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 007151e9ec3438da6e49ca167b95189883525e2259d1678b194e1e4fedae3ac9059d6eea03490a084c5be80d033be6c5e7577b51bf400100e25ee63a58dff4a7
|
7
|
+
data.tar.gz: a6111473d44f5a68a0fc59c3ef6b274864bfed86bbdaf55805dd8ae24770f0dd163437218a56962b73c468a5caaa016868c734a1b7730c7162a8170aebf45032
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Jason Madsen
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# routler
|
2
|
+
|
3
|
+
Convert your rails routes to a CSV for reporting, processing, etc.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'routler'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install routler
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
```bash
|
24
|
+
|
25
|
+
routler -h
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
## Contributing
|
30
|
+
|
31
|
+
1. Fork it ( https://github.com/[my-github-username]/routler/fork )
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
34
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
35
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/routler
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'routler'
|
4
|
+
require 'commander/import'
|
5
|
+
|
6
|
+
program :version, Routler::VERSION
|
7
|
+
program :description, 'convert your rails routes to a CSV for reporting, processing, etc'
|
8
|
+
|
9
|
+
default_command :build
|
10
|
+
|
11
|
+
command :build do |c|
|
12
|
+
c.syntax = 'routler build filename [options]'
|
13
|
+
c.summary = 'build csv from routes'
|
14
|
+
c.description = <<-EOF
|
15
|
+
Builds CSV files for your rail routes. 'filename' is assumed to be a file that
|
16
|
+
holds the output of a rake routes run. If no filename is passed, routler will
|
17
|
+
run rake routes in your cwd and use the contents out its output.
|
18
|
+
|
19
|
+
build is the default command so you can actually drop the build argument in all
|
20
|
+
of the following examples
|
21
|
+
EOF
|
22
|
+
c.example 'run rake routes in cwd and output csv to stdout', 'routler build'
|
23
|
+
c.example 'process input_file and write csv to stdout', 'routler build input_file'
|
24
|
+
c.example 'process input_file and write csv to a file named routes.csv', 'routler build input_file -o routes.csv'
|
25
|
+
c.option '--output STRING', 'output file path'
|
26
|
+
c.option '--stats BOOL', 'output stats'
|
27
|
+
c.action do |args, options|
|
28
|
+
options.default output: 'stdout', stats: false
|
29
|
+
formatter = Routler::Formatters::Csv.new
|
30
|
+
cs = Routler::Consumer.new
|
31
|
+
parser = Routler::Parser.new
|
32
|
+
content = formatter.format(parser.parse(cs.load_file(args[0])))
|
33
|
+
Routler::Presenter.new.display content, options.output
|
34
|
+
if options.stats
|
35
|
+
puts Routler::StatBuilder.new(parser).display
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/lib/routler.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Routler
|
2
|
+
class Consumer
|
3
|
+
|
4
|
+
def load_file path=nil
|
5
|
+
path ? IO.read(path) : build_routes
|
6
|
+
end
|
7
|
+
|
8
|
+
def build_routes
|
9
|
+
contents = ''
|
10
|
+
pipe = IO.popen("bundle exec rake routes")
|
11
|
+
while (line = pipe.gets)
|
12
|
+
contents += line
|
13
|
+
end
|
14
|
+
contents
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Routler
|
2
|
+
class Controller
|
3
|
+
|
4
|
+
attr_accessor :actions
|
5
|
+
attr_accessor :name
|
6
|
+
|
7
|
+
def initialize(name)
|
8
|
+
@name = name
|
9
|
+
@actions = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_action(action)
|
13
|
+
actions.push action unless actions.include? action
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module Routler
|
4
|
+
module Formatters
|
5
|
+
class Csv
|
6
|
+
|
7
|
+
def initialize(controllers=[])
|
8
|
+
@controllers = controllers
|
9
|
+
end
|
10
|
+
|
11
|
+
def format(controllers=nil)
|
12
|
+
@controllers = controllers if controllers
|
13
|
+
CSV.generate do |csv|
|
14
|
+
csv << ['Controller', 'Action']
|
15
|
+
@controllers.each do |c|
|
16
|
+
c.actions.each do |a|
|
17
|
+
csv << [c.name, a]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Routler
|
2
|
+
class Parser
|
3
|
+
|
4
|
+
attr_accessor :controllers
|
5
|
+
attr_accessor :lines
|
6
|
+
attr_accessor :error_lines
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@controllers = Hash.new
|
10
|
+
@error_lines = []
|
11
|
+
@lines = 0
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse(content)
|
15
|
+
content.each_line do |line|
|
16
|
+
@lines += 1
|
17
|
+
add_controller(parse_line line)
|
18
|
+
end
|
19
|
+
all_controllers
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_line(line)
|
23
|
+
match = line.match(/^(\s{1,})?(\S*\s\S*\s{1,}\/\S*)(?<cont>.*)\#(?<action>\S*)/)
|
24
|
+
controller = Hash.new
|
25
|
+
begin
|
26
|
+
if match[:cont]
|
27
|
+
controller[:name] = match[:cont].strip
|
28
|
+
controller[:action] = match[:action].strip.chomp
|
29
|
+
end
|
30
|
+
rescue
|
31
|
+
controller[:error] = line
|
32
|
+
end
|
33
|
+
controller
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_controller(controller)
|
37
|
+
if controller.fetch :error, nil
|
38
|
+
@error_lines << controller[:error]
|
39
|
+
else
|
40
|
+
name = controller[:name]
|
41
|
+
action = controller[:action]
|
42
|
+
@controllers[name] = Controller.new(name) if !@controllers.fetch name, nil
|
43
|
+
@controllers[name].add_action action
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def all_controllers
|
48
|
+
cont = []
|
49
|
+
@controllers.keys.sort.each do |k|
|
50
|
+
cont << @controllers[k]
|
51
|
+
end
|
52
|
+
cont
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Routler
|
2
|
+
class StatBuilder
|
3
|
+
|
4
|
+
attr_accessor :parser
|
5
|
+
|
6
|
+
def initialize(parser)
|
7
|
+
@parser = parser
|
8
|
+
end
|
9
|
+
|
10
|
+
def display
|
11
|
+
controllers = @parser.all_controllers
|
12
|
+
num_actions = controllers.inject(0) {|sum, c| sum + c.actions.length}
|
13
|
+
output = " Stats:\n"
|
14
|
+
output += "=============================\n"
|
15
|
+
output += "Controllers found: #{controllers.length}\n"
|
16
|
+
output += " Actions found: #{num_actions}\n"
|
17
|
+
output += " Lines parsed: #{@parser.lines}\n"
|
18
|
+
output += " Parsing errors: #{@parser.error_lines.length}\n"
|
19
|
+
output += "=============================\n"
|
20
|
+
output += "Parsing error on the following lines:\n"
|
21
|
+
@parser.error_lines.each {|e| output += "#{e}"}
|
22
|
+
output
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/routler.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'routler/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "routler"
|
8
|
+
spec.version = Routler::VERSION
|
9
|
+
spec.authors = ["Jason Madsen"]
|
10
|
+
spec.email = ["knomedia@gmail.com"]
|
11
|
+
spec.summary = %q{Convert your rails routes to a CSV for reporting, processing, etc.}
|
12
|
+
spec.description = %q{Convert your rails routes to a CSV for reporting, processing, etc.}
|
13
|
+
spec.homepage = "https://github.com/knomedia/routler"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "commander"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "rspec"
|
26
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Routler::Consumer do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@consumer = Routler::Consumer.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe 'load_file' do
|
10
|
+
it 'load route content from a file' do
|
11
|
+
output = @consumer.load_file 'spec/support/routes.txt'
|
12
|
+
expect(output).to match (/conversations#destroy/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Routler::Controller do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@controller = Routler::Controller.new('testing')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should hold a default name' do
|
10
|
+
expect(@controller.name).to eq('testing')
|
11
|
+
end
|
12
|
+
it 'should start with an emptyp actions array' do
|
13
|
+
expect(@controller.actions).to eq([])
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
describe 'add_action' do
|
18
|
+
it 'should add actions' do
|
19
|
+
@controller.add_action('index')
|
20
|
+
expect(@controller.actions).to eq(['index'])
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should not add the same action more than once' do
|
24
|
+
@controller.add_action('index')
|
25
|
+
@controller.add_action('index')
|
26
|
+
expect(@controller.actions).to eq(['index'])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Routler::Formatters::Csv do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
controllers = []
|
7
|
+
['users', 'auth'].each do |controller|
|
8
|
+
a = Routler::Controller.new controller
|
9
|
+
a.add_action 'index'
|
10
|
+
a.add_action 'update'
|
11
|
+
a.add_action 'destroy'
|
12
|
+
controllers << a
|
13
|
+
end
|
14
|
+
@formatter = Routler::Formatters::Csv.new(controllers)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#format' do
|
18
|
+
|
19
|
+
it 'should return the first line as headers' do
|
20
|
+
csv = @formatter.format
|
21
|
+
expect(csv.lines[0].chomp).to eq('Controller,Action')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should return a row for each action' do
|
25
|
+
csv = @formatter.format
|
26
|
+
expect(csv.lines[6].chomp).to eq('auth,destroy')
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Routler::Parser do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@p = Routler::Parser.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should have controllers, lines and error_lines attrs' do
|
10
|
+
expect(@p.controllers).to eq({})
|
11
|
+
expect(@p.lines).to eq(0)
|
12
|
+
expect(@p.error_lines).to eq([])
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#parse_line' do
|
16
|
+
it 'should parse a single line' do
|
17
|
+
line = "registration_confirmation GET /communications/:id/register(.:format) communication_channels#confirm"
|
18
|
+
output = @p.parse_line line
|
19
|
+
expect(output[:name]).to eq('communication_channels')
|
20
|
+
expect(output[:action]).to eq('confirm')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should flag error when line parsing fails' do
|
24
|
+
line = "registration_confirmation GET/communications/:id/register(.:format)communication_channels#confirm"
|
25
|
+
output = @p.parse_line line
|
26
|
+
expect(output[:error]).to eq(line)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#add_controller' do
|
31
|
+
it 'should add invalid parsed objects to error_lines' do
|
32
|
+
line = "registration_confirmation GET/communications/:id/register(.:format)communication_channels#confirm"
|
33
|
+
output = @p.parse_line line
|
34
|
+
@p.add_controller output
|
35
|
+
expect(@p.error_lines.first).to eq(line)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should add valid parsed objects to controllers' do
|
39
|
+
line = "registration_confirmation GET /communications/:id/register(.:format) communication_channels#confirm"
|
40
|
+
output = @p.parse_line line
|
41
|
+
@p.add_controller(output)
|
42
|
+
expect(@p.controllers['communication_channels'].actions).to eq(['confirm'])
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should add additional valid parsed objects to a single controllers' do
|
46
|
+
line = "oauth_success GET /oauth_success(.:format) users#oauth_success"
|
47
|
+
line2 = "oauth GET /oauth(.:format) users#oauth"
|
48
|
+
@p.add_controller(@p.parse_line line)
|
49
|
+
@p.add_controller(@p.parse_line line2)
|
50
|
+
expect(@p.controllers['users'].actions).to eq(['oauth_success', 'oauth'])
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#parse' do
|
55
|
+
it 'should parse multiple lines' do
|
56
|
+
content = "oauth_success GET /oauth_success(.:format) users#oauth_success"
|
57
|
+
content = content + "\n"
|
58
|
+
content = content + "oauth GET /oauth(.:format) users#oauth"
|
59
|
+
@p.parse content
|
60
|
+
expect(@p.controllers['users'].actions).to eq(['oauth_success', 'oauth'])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#all_controllers' do
|
65
|
+
it 'should return a sorted array of controllers' do
|
66
|
+
content = "oauth_success GET /oauth_success(.:format) foo#oauth_success"
|
67
|
+
content = content + "\n"
|
68
|
+
content = content + "oauth GET /oauth(.:format) bar#oauth"
|
69
|
+
@p.parse content
|
70
|
+
controller_names = @p.all_controllers.map {|c| c.name}
|
71
|
+
expect(controller_names).to eq(['bar', 'foo'])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Routler::StatBuilder do
|
4
|
+
|
5
|
+
def controller_double name
|
6
|
+
actions = double()
|
7
|
+
allow(actions).to receive(:length).and_return(2)
|
8
|
+
ct = double()
|
9
|
+
allow(ct).to receive(:name).and_return(name)
|
10
|
+
allow(ct).to receive(:actions).and_return(actions)
|
11
|
+
ct
|
12
|
+
end
|
13
|
+
|
14
|
+
before :each do
|
15
|
+
controllers = []
|
16
|
+
['users', 'auth'].each {|c| controllers << controller_double(c)}
|
17
|
+
parser = double()
|
18
|
+
allow(parser).to receive(:lines).and_return(50)
|
19
|
+
allow(parser).to receive(:error_lines).and_return(['errorline', 'another errorline'])
|
20
|
+
allow(parser).to receive(:all_controllers).and_return(controllers)
|
21
|
+
@sb = Routler::StatBuilder.new parser
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should have a parser' do
|
25
|
+
expect(@sb.parser).to_not eq(nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#display' do
|
29
|
+
|
30
|
+
it 'should display the number of error lines' do
|
31
|
+
expect(@sb.display).to match(/Parsing errors: 2/)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should display the number of lines parsed' do
|
35
|
+
expect(@sb.display).to match(/Lines parsed: 50/)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should display the number of controllers found' do
|
39
|
+
expect(@sb.display).to match(/Controllers found: 2/)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should display the number of actions found' do
|
43
|
+
expect(@sb.display).to match(/Actions found: 4/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
submission_comment DELETE /submission_comments/:id(.:format) submission_comments#destroy
|
2
|
+
inbox GET /inbox(.:format) context#inbox
|
3
|
+
oauth_redirect_proxy GET /oauth/redirect_proxy(.:format) oauth_proxy#redirect_proxy
|
4
|
+
conversations_unread GET /conversations/unread(.:format) conversations#index {:redirect_scope=>"unread"}
|
5
|
+
conversations_starred GET /conversations/starred(.:format) conversations#index {:redirect_scope=>"starred"}
|
6
|
+
conversations_sent GET /conversations/sent(.:format) conversations#index {:redirect_scope=>"sent"}
|
7
|
+
conversations_archived GET /conversations/archived(.:format) conversations#index {:redirect_scope=>"archived"}
|
8
|
+
conversations_find_recipients GET /conversations/find_recipients(.:format) search#recipients
|
9
|
+
search_recipients GET /search/recipients(.:format) search#recipients
|
10
|
+
conversations_mark_all_as_read POST /conversations/mark_all_as_read(.:format) conversations#mark_all_as_read
|
11
|
+
conversations_watched_intro POST /conversations/watched_intro(.:format) conversations#watched_intro
|
12
|
+
conversation_batches GET /conversations/batches(.:format) conversations#batches
|
13
|
+
toggle_new_conversations POST /conversations/toggle_new_conversations(.:format) conversations#toggle_new_conversations
|
14
|
+
conversation_add_recipients POST /conversations/:conversation_id/add_recipients(.:format) conversations#add_recipients
|
15
|
+
conversation_add_message POST /conversations/:conversation_id/add_message(.:format) conversations#add_message
|
16
|
+
conversation_remove_messages POST /conversations/:conversation_id/remove_messages(.:format) conversations#remove_messages
|
17
|
+
conversations GET /conversations(.:format) conversations#index
|
18
|
+
POST /conversations(.:format) conversations#create
|
19
|
+
conversation GET /conversations/:id(.:format) conversations#show
|
20
|
+
PUT /conversations/:id(.:format) conversations#update
|
21
|
+
DELETE /conversations/:id(.:format) conversations#destroy
|
metadata
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: routler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jason Madsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: commander
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Convert your rails routes to a CSV for reporting, processing, etc.
|
70
|
+
email:
|
71
|
+
- knomedia@gmail.com
|
72
|
+
executables:
|
73
|
+
- routler
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- bin/routler
|
83
|
+
- lib/routler.rb
|
84
|
+
- lib/routler/consumer.rb
|
85
|
+
- lib/routler/controller.rb
|
86
|
+
- lib/routler/formatters/csv.rb
|
87
|
+
- lib/routler/parser.rb
|
88
|
+
- lib/routler/presenter.rb
|
89
|
+
- lib/routler/stat_builder.rb
|
90
|
+
- lib/routler/version.rb
|
91
|
+
- routler.gemspec
|
92
|
+
- spec/routler/consumer_spec.rb
|
93
|
+
- spec/routler/controller_spec.rb
|
94
|
+
- spec/routler/formatters/csv_spec.rb
|
95
|
+
- spec/routler/parser_spec.rb
|
96
|
+
- spec/routler/stat_builder_spec.rb
|
97
|
+
- spec/routler/version_spec.rb
|
98
|
+
- spec/spec_helper.rb
|
99
|
+
- spec/support/routes.txt
|
100
|
+
homepage: https://github.com/knomedia/routler
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata: {}
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.2.2
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Convert your rails routes to a CSV for reporting, processing, etc.
|
124
|
+
test_files:
|
125
|
+
- spec/routler/consumer_spec.rb
|
126
|
+
- spec/routler/controller_spec.rb
|
127
|
+
- spec/routler/formatters/csv_spec.rb
|
128
|
+
- spec/routler/parser_spec.rb
|
129
|
+
- spec/routler/stat_builder_spec.rb
|
130
|
+
- spec/routler/version_spec.rb
|
131
|
+
- spec/spec_helper.rb
|
132
|
+
- spec/support/routes.txt
|
133
|
+
has_rdoc:
|