Gemfiler 0.0.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.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +5 -0
- data/Gemfiler.gemspec +23 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/bin/gemfiler +7 -0
- data/lib/Gemfiler.rb +9 -0
- data/lib/Gemfiler/bundler_shim.rb +85 -0
- data/lib/Gemfiler/cabinet.rb +19 -0
- data/lib/Gemfiler/cli.rb +21 -0
- data/lib/Gemfiler/filer.rb +42 -0
- data/lib/Gemfiler/output.rb +97 -0
- data/lib/Gemfiler/version.rb +3 -0
- data/lib/gemfiler/templates/gemfile.erb +15 -0
- data/spec/bundler_shim_spec.rb +24 -0
- data/spec/cabinet_spec.rb +37 -0
- data/spec/filer_spec.rb +38 -0
- data/spec/output_spec.rb +53 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/support/gemfiles/HugeMess +129 -0
- data/spec/support/gemfiles/SampleGemfile +28 -0
- data/spec/support/gemfiles/SampleGemfileForGroups +13 -0
- data/spec/support/gemfiles/SampleGemfileForOutput +15 -0
- metadata +127 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfiler.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require File.expand_path('../lib/gemfiler/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.authors = ["Robert Ross"]
|
7
|
+
gem.email = ["robert@creativequeries.com"]
|
8
|
+
gem.description = %q{Gemfiler makes your Gemfile pretty.}
|
9
|
+
gem.summary = %q{Gemfiler knows how to make Gemfiles organized and reader friendly.}
|
10
|
+
gem.homepage = ""
|
11
|
+
|
12
|
+
gem.files = `git ls-files`.split($\)
|
13
|
+
gem.executables = `git ls-files -- exe/*`.split("\n").map{ |f| File.basename(f) }
|
14
|
+
gem.test_files = gem.files.grep(%r{^spec/})
|
15
|
+
gem.name = "Gemfiler"
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.version = Gemfiler::VERSION
|
18
|
+
|
19
|
+
gem.add_runtime_dependency('thor', '~> 0.16')
|
20
|
+
|
21
|
+
gem.add_development_dependency('rspec', '~> 2.11')
|
22
|
+
gem.add_development_dependency('awesome_print')
|
23
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 TODO: Write your name
|
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,29 @@
|
|
1
|
+
# Gemfiler
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'Gemfiler'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install Gemfiler
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/bin/gemfiler
ADDED
data/lib/Gemfiler.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module Gemfiler
|
2
|
+
class BundlerShim
|
3
|
+
attr_accessor :gems, :ruby_version, :sources, :has_gemspec
|
4
|
+
attr_reader :cabinet
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@gems = []
|
8
|
+
@sources = []
|
9
|
+
@ruby_version = nil
|
10
|
+
@has_gemspec = false
|
11
|
+
end
|
12
|
+
|
13
|
+
def gather(source)
|
14
|
+
source = source.gsub /source[\s]+\:([\w_]+)/, 'source(:\\1)'
|
15
|
+
instance_eval(source)
|
16
|
+
end
|
17
|
+
|
18
|
+
def gemspec?
|
19
|
+
@has_gemspec
|
20
|
+
end
|
21
|
+
|
22
|
+
def gem(name, *args)
|
23
|
+
return unless name.length > 0
|
24
|
+
gem = {name: name}
|
25
|
+
|
26
|
+
case args.first
|
27
|
+
when String
|
28
|
+
gem[:version] = args.first
|
29
|
+
when Hash
|
30
|
+
gem.merge! args.first
|
31
|
+
end
|
32
|
+
|
33
|
+
gem[:groups] = @groups.map(&:to_s) if @groups
|
34
|
+
gem[:platforms] = @platforms.map(&:to_s) if @platforms
|
35
|
+
|
36
|
+
if @git
|
37
|
+
gem[:git] = @git
|
38
|
+
gem.merge! @git_options
|
39
|
+
end
|
40
|
+
|
41
|
+
if gem[:group]
|
42
|
+
gem[:groups] ||= []
|
43
|
+
gem[:groups] << gem.delete(:group)
|
44
|
+
end
|
45
|
+
|
46
|
+
@gems << gem
|
47
|
+
|
48
|
+
gem
|
49
|
+
end
|
50
|
+
|
51
|
+
def gemspec
|
52
|
+
@has_gemspec = true
|
53
|
+
end
|
54
|
+
|
55
|
+
def ruby(version, engine={})
|
56
|
+
@ruby_version = {version: version}.merge(engine)
|
57
|
+
end
|
58
|
+
|
59
|
+
def source(source)
|
60
|
+
@sources << source
|
61
|
+
end
|
62
|
+
|
63
|
+
def group(*names, &block)
|
64
|
+
@groups = names.uniq
|
65
|
+
self.instance_eval(&block)
|
66
|
+
@groups = nil
|
67
|
+
end
|
68
|
+
|
69
|
+
def platforms(*names, &block)
|
70
|
+
@platforms = names.uniq
|
71
|
+
self.instance_eval(&block)
|
72
|
+
@platforms = nil
|
73
|
+
end
|
74
|
+
|
75
|
+
def git(url, options={}, &block)
|
76
|
+
@git = url
|
77
|
+
@git_options = options
|
78
|
+
|
79
|
+
self.instance_eval(&block)
|
80
|
+
|
81
|
+
@git = nil
|
82
|
+
@git_options = nil
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Gemfiler
|
2
|
+
class Cabinet
|
3
|
+
attr_reader :gemfile, :source_contents, :shim
|
4
|
+
|
5
|
+
def initialize(gemfile)
|
6
|
+
@gemfile = gemfile
|
7
|
+
@shim = BundlerShim.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def gems
|
11
|
+
self.shim.gems
|
12
|
+
end
|
13
|
+
|
14
|
+
def collect!
|
15
|
+
@source_contents ||= File.read(gemfile)
|
16
|
+
self.shim.gather(@source_contents)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/Gemfiler/cli.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'awesome_print'
|
2
|
+
|
3
|
+
module Gemfiler
|
4
|
+
class CLI < Thor
|
5
|
+
desc 'file', 'Organizes your Gemfile.'
|
6
|
+
|
7
|
+
def file(gemfile='./Gemfile')
|
8
|
+
gemfile = File.expand_path("../../../#{gemfile}", __FILE__)
|
9
|
+
|
10
|
+
cabinet = Gemfiler::Cabinet.new(gemfile)
|
11
|
+
cabinet.collect!
|
12
|
+
|
13
|
+
filer = Gemfiler::Filer.new(cabinet)
|
14
|
+
filer.group
|
15
|
+
filer.alphabetize
|
16
|
+
output = Gemfiler::Output.new(filer)
|
17
|
+
|
18
|
+
output.write(gemfile)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Gemfiler
|
2
|
+
class Filer
|
3
|
+
attr_accessor :cabinet, :groups, :uncategorized
|
4
|
+
|
5
|
+
def initialize(cabinet)
|
6
|
+
@cabinet = cabinet
|
7
|
+
@groups = {}
|
8
|
+
@uncategorized = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def group
|
12
|
+
cabinet.gems.each do |gem|
|
13
|
+
if gem[:groups]
|
14
|
+
gem_groups = gem.delete(:groups).sort
|
15
|
+
groups[gem_groups] ||= []
|
16
|
+
groups[gem_groups] << gem
|
17
|
+
else
|
18
|
+
uncategorized << gem
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def alphabetize
|
24
|
+
self.uncategorized = alphabetize_from_array(self.uncategorized)
|
25
|
+
self.groups = self.groups.inject({}) do |hash, (groups, gems)|
|
26
|
+
hash[groups] = alphabetize_from_array(gems)
|
27
|
+
hash
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Delegate shim
|
32
|
+
def shim
|
33
|
+
cabinet.shim
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def alphabetize_from_array(gems)
|
39
|
+
gems.sort_by {|g| g[:name] }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
module Gemfiler
|
4
|
+
class Output
|
5
|
+
attr_reader :filer
|
6
|
+
|
7
|
+
def initialize(filer)
|
8
|
+
@filer = filer
|
9
|
+
end
|
10
|
+
|
11
|
+
def write(gemfile)
|
12
|
+
File.open(gemfile, 'w') do |file|
|
13
|
+
file.write(content)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def content
|
18
|
+
erb = ERB.new(File.read(File.expand_path('../templates/gemfile.erb', __FILE__)), nil, '<>')
|
19
|
+
erb.result(binding)
|
20
|
+
end
|
21
|
+
|
22
|
+
def sources
|
23
|
+
filer.shim.sources.inject([]) do |sources, source|
|
24
|
+
sources << "source #{type_value(source)}"
|
25
|
+
sources
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def gemspec
|
30
|
+
filer.shim.gemspec? ? 'gemspec' : ''
|
31
|
+
end
|
32
|
+
|
33
|
+
def ruby
|
34
|
+
parts = []
|
35
|
+
if version_info = filer.shim.ruby_version
|
36
|
+
parts << "ruby '#{version_info[:version]}'"
|
37
|
+
parts << ":engine => '#{version_info[:engine]}'" if version_info[:engine]
|
38
|
+
parts << ":engine_version => '#{version_info[:engine_version]}'" if version_info[:engine_version]
|
39
|
+
end
|
40
|
+
|
41
|
+
parts.join(', ')
|
42
|
+
end
|
43
|
+
|
44
|
+
def uncategorized_gems
|
45
|
+
filer.uncategorized.inject([]) do |gems, gem|
|
46
|
+
gems << self.gem_line(gem)
|
47
|
+
gems
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def longest_gem_name(group=nil)
|
52
|
+
gems = group ? groups[group] : filer.uncategorized
|
53
|
+
gems.inject(0) {|max, gem| gem[:name].length > max ? gem[:name].length : max }
|
54
|
+
end
|
55
|
+
|
56
|
+
def groups
|
57
|
+
filer.groups
|
58
|
+
end
|
59
|
+
|
60
|
+
def spacer
|
61
|
+
' '
|
62
|
+
end
|
63
|
+
|
64
|
+
def type_value(value)
|
65
|
+
case value
|
66
|
+
when Symbol
|
67
|
+
":#{value.to_s}"
|
68
|
+
when String
|
69
|
+
"'#{value}'"
|
70
|
+
when Fixnum, TrueClass, FalseClass
|
71
|
+
value.to_s
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# It's a short parameter name because my syntax highlighter doesn't like the word "gem"
|
76
|
+
def gem_line(g, groups=nil)
|
77
|
+
gem_name = g[:name]
|
78
|
+
line = ["gem '#{gem_name}'"]
|
79
|
+
|
80
|
+
space_between = longest_gem_name(groups) - gem_name.length
|
81
|
+
|
82
|
+
if g[:version]
|
83
|
+
line << (' ' * space_between) + "'#{g[:version]}'"
|
84
|
+
elsif (g.length - 1) > 0
|
85
|
+
line << (' ' * space_between) + g.inject([]) do |options, (key, value)|
|
86
|
+
if key != :name
|
87
|
+
options << ":#{key} => #{type_value(value)}"
|
88
|
+
end
|
89
|
+
|
90
|
+
options
|
91
|
+
end.join(', ')
|
92
|
+
end
|
93
|
+
|
94
|
+
line.join(', ')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= sources.join("\n") %>
|
2
|
+
<%= gemspec %>
|
3
|
+
<%= ruby %>
|
4
|
+
<% uncategorized_gems.each do |gem| %>
|
5
|
+
<%= gem %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<% groups.each do |group, gems| %>
|
9
|
+
group <%= group.map{|g| type_value(g.to_sym) }.join(', ') %> do
|
10
|
+
<% gems.each do |gem| %>
|
11
|
+
<%= gem_line(gem, group) %>
|
12
|
+
<% end %>
|
13
|
+
end
|
14
|
+
|
15
|
+
<% end %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gemfiler::BundlerShim do
|
4
|
+
let(:gemfile) { File.read('./spec/support/gemfiles/SampleGemfile') }
|
5
|
+
subject { Gemfiler::BundlerShim.new }
|
6
|
+
|
7
|
+
before(:each) { subject.gather(gemfile) }
|
8
|
+
|
9
|
+
it 'enables gemspec' do
|
10
|
+
subject.gemspec?.should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'can define a ruby version' do
|
14
|
+
subject.ruby_version[:version].should eq('1.9.2')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'can define a ruby version w/ engine' do
|
18
|
+
subject.ruby_version[:engine].should eq('jruby')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can define a ruby version w/ engine version' do
|
22
|
+
subject.ruby_version[:engine_version].should eq('1.0')
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gemfiler::Cabinet do
|
4
|
+
subject { Gemfiler::Cabinet.new('./spec/support/gemfiles/SampleGemfile') }
|
5
|
+
|
6
|
+
context '.collect' do
|
7
|
+
before(:each) { subject.collect! }
|
8
|
+
|
9
|
+
it 'retrieves all gems and stores them.' do
|
10
|
+
subject.gems.should include({name: 'gemfiler'})
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'retrieves gems with versions' do
|
14
|
+
subject.gems.should include({name: 'rspec', version: '2.11'})
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'applies groups in block syntax' do
|
18
|
+
subject.gems.should include({name: 'somegem', groups: ['test']})
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'applies platforms in block syntax' do
|
22
|
+
subject.gems.should include({name: 'plat', platforms: ['ruby']})
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'applies git sourced gems in block syntax' do
|
26
|
+
subject.gems.should include({name: 'rails', git: 'git://github.com/rails/rails.git'})
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'applies git sourced gems in block syntax with git options' do
|
30
|
+
subject.gems.should include({name: 'rails2', git: 'git://github.com/rails/rails.git', ref: '2f7cb5e9'})
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'always puts a gem group into the plural key' do
|
34
|
+
subject.gems.should include({name: 'somegemthesecond', groups: ['test2']})
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/filer_spec.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gemfiler::Filer do
|
4
|
+
let(:cabinet) { Gemfiler::Cabinet.new('./spec/support/gemfiles/SampleGemfileForGroups') }
|
5
|
+
subject { Gemfiler::Filer.new(cabinet) }
|
6
|
+
|
7
|
+
context 'gem groups' do
|
8
|
+
before(:each) do
|
9
|
+
cabinet.collect!
|
10
|
+
subject.group
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'are gathered correctly' do
|
14
|
+
subject.groups[['randomgroup']].size.should eq(3)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'expose uncategorized gems' do
|
18
|
+
subject.uncategorized.size.should eq(3)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'alphabitizer' do
|
23
|
+
before(:each) do
|
24
|
+
cabinet.collect!
|
25
|
+
subject.group
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'alphabetizes uncategorized gems correctly' do
|
29
|
+
subject.alphabetize
|
30
|
+
subject.uncategorized.first[:name].should eq('aaa')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'alphabetizes grouped gems correctly' do
|
34
|
+
subject.alphabetize
|
35
|
+
subject.groups[['randomgroup']].first[:name].should eq('bbb')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/spec/output_spec.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gemfiler::Output do
|
4
|
+
let(:cabinet) { Gemfiler::Cabinet.new('./spec/support/gemfiles/SampleGemfileForOutput') }
|
5
|
+
let(:filer) { Gemfiler::Filer.new(cabinet) }
|
6
|
+
|
7
|
+
subject { Gemfiler::Output.new(filer) }
|
8
|
+
|
9
|
+
context 'gemfile output methods' do
|
10
|
+
before(:each) do
|
11
|
+
cabinet.collect!
|
12
|
+
filer.group
|
13
|
+
filer.alphabetize
|
14
|
+
end
|
15
|
+
|
16
|
+
it '.source returns sources' do
|
17
|
+
subject.sources.should include "source 'http://rubygems.org'"
|
18
|
+
end
|
19
|
+
|
20
|
+
it '.source returns sources as symbols' do
|
21
|
+
subject.sources.should include 'source :rubygems'
|
22
|
+
end
|
23
|
+
|
24
|
+
it '.gemspec returns a gemspec line' do
|
25
|
+
subject.gemspec.should match /gemspec/
|
26
|
+
end
|
27
|
+
|
28
|
+
it '.ruby returns the correct ruby definition' do
|
29
|
+
subject.ruby.should match /ruby '1.9.3'/
|
30
|
+
end
|
31
|
+
|
32
|
+
context '.uncategorized_gems' do
|
33
|
+
it 'returns alphabitized gems' do
|
34
|
+
organized_gems = ['aaa', 'bbb', 'ccc']
|
35
|
+
subject.uncategorized_gems.each do |gem|
|
36
|
+
gem.should match "gem '#{organized_gems.shift}'"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'returns alphabitized gems with version' do
|
41
|
+
subject.uncategorized_gems[0].should match /gem 'aaa', '1'/
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns alphabitized gems with options' do
|
45
|
+
subject.uncategorized_gems[1].should match /gem 'bbb', :path => 'mygempath'/
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'returns alphabitized gems with multiple options' do
|
49
|
+
subject.uncategorized_gems[2].should match /gem 'ccc', :path => 'awesomepath', :require => 'asd'/
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'gemfiler'
|
2
|
+
require 'ap'
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
|
+
config.run_all_when_everything_filtered = true
|
7
|
+
config.filter_run :focus
|
8
|
+
|
9
|
+
# Run specs in random order to surface order dependencies. If you find an
|
10
|
+
# order dependency and want to debug it, you can fix the order by providing
|
11
|
+
# the seed, which is printed after each run.
|
12
|
+
# --seed 1234
|
13
|
+
# config.order = 'random'
|
14
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
|
3
|
+
# Essential gems
|
4
|
+
gem 'rails', '3.1.6'
|
5
|
+
gem 'rack', '1.3.6'
|
6
|
+
gem 'thin'
|
7
|
+
gem 'unicorn'
|
8
|
+
gem 'foreman'
|
9
|
+
|
10
|
+
# Resque and plugins
|
11
|
+
gem 'resque', :require => 'resque/server', :git => 'https://github.com/defunkt/resque.git'
|
12
|
+
gem 'resque-scheduler', :require => 'resque_scheduler'
|
13
|
+
gem 'redis-namespace'
|
14
|
+
gem 'god'
|
15
|
+
|
16
|
+
# Payment processing and shopping cart gems
|
17
|
+
gem "activemerchant", "~> 1.21.0"
|
18
|
+
|
19
|
+
gem 'jude', :git => 'git@github.com:1703india/jude.git'
|
20
|
+
|
21
|
+
gem 'mookie', :git => 'git@github.com:1703india/mookie.git'
|
22
|
+
|
23
|
+
gem 'authorize-net', '~> 1.5.2'
|
24
|
+
|
25
|
+
gem 'fog'
|
26
|
+
gem 'devise'
|
27
|
+
gem 'defaultable', :git => 'git@github.com:bobbytables/defaultable.git', :ref => 'fade89061fb5'
|
28
|
+
gem 'kaminari'
|
29
|
+
|
30
|
+
gem 'timecop'
|
31
|
+
gem 'geocoder'
|
32
|
+
|
33
|
+
# Authentication and permissions gems
|
34
|
+
gem 'cobra', :git => 'git@github.com:1703india/cobra.git'
|
35
|
+
gem 'cancan', '1.6.7'
|
36
|
+
|
37
|
+
# Model extension and validation gems
|
38
|
+
gem 'state_machine'
|
39
|
+
gem 'validates_timeliness', '~> 3.0.2'
|
40
|
+
gem 'gmaps4rails'
|
41
|
+
gem 'chronic'
|
42
|
+
gem 'paper_trail'
|
43
|
+
gem 'no_peeping_toms', :git => 'git://github.com/patmaddox/no-peeping-toms.git'
|
44
|
+
gem "tire", :git => 'git@github.com:bobbytables/tire.git', :ref => '543f4b410f6c7b4ce62b4b866fb45a2339642b16'
|
45
|
+
gem 'draper', '~> 0.9'
|
46
|
+
|
47
|
+
# View helper gems
|
48
|
+
gem 'formtastic', '~> 2'
|
49
|
+
gem 'formtastic_datepicker_inputs', :git => 'https://github.com/adyard/formtastic_datepicker_inputs.git'
|
50
|
+
gem 'redcarpet'
|
51
|
+
|
52
|
+
# File attachment gems
|
53
|
+
gem 'carrierwave', :git => 'https://github.com/jnicklas/carrierwave.git'
|
54
|
+
gem 'mini_magick'
|
55
|
+
|
56
|
+
# Email helper gems
|
57
|
+
gem 'liquid'
|
58
|
+
|
59
|
+
# Postgres DB adapter gem and multi-schema helper
|
60
|
+
gem 'pg'
|
61
|
+
gem 'apartment'
|
62
|
+
|
63
|
+
# API related gems
|
64
|
+
gem 'httparty'
|
65
|
+
gem 'grape', :git => 'https://github.com/intridea/grape.git'
|
66
|
+
|
67
|
+
# External services
|
68
|
+
gem 'assistly'
|
69
|
+
|
70
|
+
# Asset pipeline gems
|
71
|
+
gem 'jquery-rails'
|
72
|
+
|
73
|
+
# No explanation needed.
|
74
|
+
gem 'newrelic_rpm'
|
75
|
+
|
76
|
+
# Deployment stuff
|
77
|
+
gem 'capistrano'
|
78
|
+
gem 'capistrano_colors'
|
79
|
+
gem 'highline', '1.6.5'
|
80
|
+
gem 'airbrake'
|
81
|
+
|
82
|
+
# ESP
|
83
|
+
gem 'acts_as_icontact', :git => 'https://github.com/dcondomitti/acts_as_icontact.git'
|
84
|
+
|
85
|
+
# Debugging Tools
|
86
|
+
group :development, :test do
|
87
|
+
gem 'pry'
|
88
|
+
gem 'awesome_print'
|
89
|
+
gem 'spin'
|
90
|
+
gem 'guard-spin'
|
91
|
+
end
|
92
|
+
|
93
|
+
# We need to explicitly define a JavaScript runtime for non-OS X platforms
|
94
|
+
group :production do
|
95
|
+
gem 'therubyracer'
|
96
|
+
end
|
97
|
+
|
98
|
+
# Gems used only for assets and not required
|
99
|
+
# in production environments by default.
|
100
|
+
group :assets do
|
101
|
+
gem 'sass-rails', " ~> 3.1.0"
|
102
|
+
gem 'coffee-rails', "~> 3.1.0"
|
103
|
+
gem 'uglifier'
|
104
|
+
end
|
105
|
+
|
106
|
+
group :development do
|
107
|
+
gem 'rails-dev-tweaks', '~> 0.5.1'
|
108
|
+
gem 'active_reload'
|
109
|
+
gem 'ruby-prof'
|
110
|
+
gem 'factory_girl_rails', '1.7.0'
|
111
|
+
gem 'syntax'
|
112
|
+
gem 'annotate', :git => 'git://github.com/ctran/annotate_models.git'
|
113
|
+
# SQLite has been moved to development only due to dependencies in CentOS/RHEL
|
114
|
+
gem 'sqlite3'
|
115
|
+
end
|
116
|
+
|
117
|
+
group :test do
|
118
|
+
gem 'rspec-rails'
|
119
|
+
gem 'database_cleaner'
|
120
|
+
gem 'factory_girl_rails', '1.7.0'
|
121
|
+
gem 'spork', '0.9.0.rc9'
|
122
|
+
gem 'simplecov', :require => false
|
123
|
+
gem 'guard-rspec'
|
124
|
+
gem 'guard-spork'
|
125
|
+
gem 'rb-fsevent'
|
126
|
+
gem 'capybara'
|
127
|
+
gem 'growl'
|
128
|
+
end
|
129
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
gemspec
|
2
|
+
ruby '1.9.2', engine: 'jruby', engine_version: '1.0'
|
3
|
+
|
4
|
+
gem 'gemfiler'
|
5
|
+
gem 'rspec', '2.11'
|
6
|
+
gem 'somegemthesecond', group: 'test2'
|
7
|
+
|
8
|
+
group :test do
|
9
|
+
gem 'somegem'
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
platforms :ruby do
|
14
|
+
gem 'plat'
|
15
|
+
end
|
16
|
+
|
17
|
+
git 'git://github.com/rails/rails.git' do
|
18
|
+
gem 'rails'
|
19
|
+
end
|
20
|
+
|
21
|
+
git 'git://github.com/rails/rails.git', ref: '2f7cb5e9' do
|
22
|
+
gem 'rails2'
|
23
|
+
end
|
24
|
+
|
25
|
+
group :randomgroup do
|
26
|
+
gem 'testgem1'
|
27
|
+
gem 'testgem2'
|
28
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
source :rubygems
|
3
|
+
ruby '1.9.3', engine: 'jruby'
|
4
|
+
|
5
|
+
gemspec
|
6
|
+
|
7
|
+
gem 'ccc', :path => 'awesomepath', :require => 'asd'
|
8
|
+
gem 'aaa', '1'
|
9
|
+
gem 'bbb', :path => 'mygempath'
|
10
|
+
|
11
|
+
group :development, :test do
|
12
|
+
gem 'bbb_somedevgem', git: 'somegit'
|
13
|
+
gem 'ccc_somedevgem'
|
14
|
+
gem 'aaa_somedevgem'
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: Gemfiler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Robert Ross
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-08-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.16'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.16'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '2.11'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.11'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: awesome_print
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
description: Gemfiler makes your Gemfile pretty.
|
63
|
+
email:
|
64
|
+
- robert@creativequeries.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- .gitignore
|
70
|
+
- .rspec
|
71
|
+
- Gemfile
|
72
|
+
- Gemfiler.gemspec
|
73
|
+
- LICENSE
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- bin/gemfiler
|
77
|
+
- lib/Gemfiler.rb
|
78
|
+
- lib/Gemfiler/bundler_shim.rb
|
79
|
+
- lib/Gemfiler/cabinet.rb
|
80
|
+
- lib/Gemfiler/cli.rb
|
81
|
+
- lib/Gemfiler/filer.rb
|
82
|
+
- lib/Gemfiler/output.rb
|
83
|
+
- lib/Gemfiler/version.rb
|
84
|
+
- lib/gemfiler/templates/gemfile.erb
|
85
|
+
- spec/bundler_shim_spec.rb
|
86
|
+
- spec/cabinet_spec.rb
|
87
|
+
- spec/filer_spec.rb
|
88
|
+
- spec/output_spec.rb
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
- spec/support/gemfiles/HugeMess
|
91
|
+
- spec/support/gemfiles/SampleGemfile
|
92
|
+
- spec/support/gemfiles/SampleGemfileForGroups
|
93
|
+
- spec/support/gemfiles/SampleGemfileForOutput
|
94
|
+
homepage: ''
|
95
|
+
licenses: []
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 1.8.23
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: Gemfiler knows how to make Gemfiles organized and reader friendly.
|
118
|
+
test_files:
|
119
|
+
- spec/bundler_shim_spec.rb
|
120
|
+
- spec/cabinet_spec.rb
|
121
|
+
- spec/filer_spec.rb
|
122
|
+
- spec/output_spec.rb
|
123
|
+
- spec/spec_helper.rb
|
124
|
+
- spec/support/gemfiles/HugeMess
|
125
|
+
- spec/support/gemfiles/SampleGemfile
|
126
|
+
- spec/support/gemfiles/SampleGemfileForGroups
|
127
|
+
- spec/support/gemfiles/SampleGemfileForOutput
|