appscrolls 0.7.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.
Files changed (110) hide show
  1. data/.gitignore +8 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +6 -0
  4. data/ChangeLog.md +63 -0
  5. data/Gemfile +3 -0
  6. data/Guardfile +18 -0
  7. data/MIT_LICENSE +20 -0
  8. data/README.md +154 -0
  9. data/Rakefile +78 -0
  10. data/appscrolls.gemspec +32 -0
  11. data/bin/appscrolls +7 -0
  12. data/features/step_definitions/common_steps.rb +211 -0
  13. data/features/support/common.rb +51 -0
  14. data/features/support/env.rb +18 -0
  15. data/lib/appscrolls.rb +10 -0
  16. data/lib/appscrolls/command.rb +85 -0
  17. data/lib/appscrolls/config.rb +86 -0
  18. data/lib/appscrolls/scroll.rb +106 -0
  19. data/lib/appscrolls/scrolls.rb +38 -0
  20. data/lib/appscrolls/template.rb +67 -0
  21. data/lib/rails/generators/.DS_Store +0 -0
  22. data/lib/rails/generators/run_template/USAGE +13 -0
  23. data/lib/rails/generators/run_template/run_template_generator.rb +13 -0
  24. data/sample.rb +75 -0
  25. data/scrolls/active_admin.rb +19 -0
  26. data/scrolls/capybara.rb +34 -0
  27. data/scrolls/cucumber.rb +21 -0
  28. data/scrolls/delayed_job.rb +94 -0
  29. data/scrolls/env_yaml.rb +53 -0
  30. data/scrolls/eycloud.rb +72 -0
  31. data/scrolls/eycloud_recipes_on_deploy.rb +20 -0
  32. data/scrolls/git.rb +17 -0
  33. data/scrolls/github.rb +38 -0
  34. data/scrolls/guard.rb +75 -0
  35. data/scrolls/jquery.rb +11 -0
  36. data/scrolls/mysql.rb +51 -0
  37. data/scrolls/passenger.rb +11 -0
  38. data/scrolls/postgresql.rb +54 -0
  39. data/scrolls/prototype.rb +21 -0
  40. data/scrolls/puma.rb +11 -0
  41. data/scrolls/rails_basics.rb +54 -0
  42. data/scrolls/redis.rb +19 -0
  43. data/scrolls/resque.rb +59 -0
  44. data/scrolls/rspec.rb +21 -0
  45. data/scrolls/simple_form.rb +19 -0
  46. data/scrolls/split.rb +35 -0
  47. data/scrolls/spork.rb +19 -0
  48. data/scrolls/sqlite3.rb +10 -0
  49. data/scrolls/test_unit.rb +11 -0
  50. data/scrolls/thin.rb +10 -0
  51. data/scrolls/twitter_bootstrap.rb +41 -0
  52. data/scrolls/unicorn.rb +10 -0
  53. data/scrolls/zzz/activerecord.rb +69 -0
  54. data/scrolls/zzz/cancan.rb +16 -0
  55. data/scrolls/zzz/carrierwave.rb +42 -0
  56. data/scrolls/zzz/carrierwave_direct.rb +13 -0
  57. data/scrolls/zzz/cartographer.rb +33 -0
  58. data/scrolls/zzz/devise.rb +52 -0
  59. data/scrolls/zzz/devise_invitable.rb +23 -0
  60. data/scrolls/zzz/event_calendar.rb +12 -0
  61. data/scrolls/zzz/factory_girl.rb +38 -0
  62. data/scrolls/zzz/ffaker.rb +22 -0
  63. data/scrolls/zzz/fixture_builder.rb +35 -0
  64. data/scrolls/zzz/forgery.rb +15 -0
  65. data/scrolls/zzz/haml.rb +11 -0
  66. data/scrolls/zzz/heroku.rb +58 -0
  67. data/scrolls/zzz/hoptoad.rb +34 -0
  68. data/scrolls/zzz/inherited_resources.rb +12 -0
  69. data/scrolls/zzz/intercom.rb +35 -0
  70. data/scrolls/zzz/jammit.rb +43 -0
  71. data/scrolls/zzz/jasmine.rb +12 -0
  72. data/scrolls/zzz/mini_magick.rb +13 -0
  73. data/scrolls/zzz/mongo_mapper.rb +20 -0
  74. data/scrolls/zzz/mongohq.rb +61 -0
  75. data/scrolls/zzz/mongoid.rb +20 -0
  76. data/scrolls/zzz/mootools.rb +23 -0
  77. data/scrolls/zzz/newrelic.rb +11 -0
  78. data/scrolls/zzz/nifty_generators.rb +21 -0
  79. data/scrolls/zzz/oa_oauth.rb +12 -0
  80. data/scrolls/zzz/omniauth.rb +55 -0
  81. data/scrolls/zzz/paper_trail.rb +17 -0
  82. data/scrolls/zzz/pow.rb +12 -0
  83. data/scrolls/zzz/rails_admin.rb +22 -0
  84. data/scrolls/zzz/rails_dev_tweaks.rb +10 -0
  85. data/scrolls/zzz/rails_erd.rb +9 -0
  86. data/scrolls/zzz/rails_footnotes.rb +14 -0
  87. data/scrolls/zzz/ransack.rb +32 -0
  88. data/scrolls/zzz/rmagick.rb +13 -0
  89. data/scrolls/zzz/sass.rb +13 -0
  90. data/scrolls/zzz/sequel.rb +13 -0
  91. data/scrolls/zzz/settingslogic.rb +43 -0
  92. data/scrolls/zzz/shoulda_matchers.rb +11 -0
  93. data/scrolls/zzz/sidekiq.rb +23 -0
  94. data/scrolls/zzz/slim.rb +11 -0
  95. data/scrolls/zzz/thinking_sphinx.rb +14 -0
  96. data/scrolls/zzz/vanity.rb +35 -0
  97. data/spec/appscrolls/config_spec.rb +99 -0
  98. data/spec/appscrolls/scroll_spec.rb +103 -0
  99. data/spec/appscrolls/scrolls/sanity_spec.rb +30 -0
  100. data/spec/appscrolls/scrolls_spec.rb +24 -0
  101. data/spec/appscrolls/template_spec.rb +57 -0
  102. data/spec/spec_helper.rb +11 -0
  103. data/spec/support/rails_directory.rb +17 -0
  104. data/spec/support/template_runner.rb +28 -0
  105. data/templates/helpers.erb +45 -0
  106. data/templates/layout.erb +44 -0
  107. data/templates/new_scroll.erb +28 -0
  108. data/templates/scroll.erb +10 -0
  109. data/version.rb +3 -0
  110. metadata +297 -0
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppScrollsScrolls::Scroll do
4
+ context "with a generated scroll" do
5
+ subject{ AppScrollsScrolls::Scroll.generate('scroll_example', "# this is a test", :category => 'example', :name => "AppScrolls Example") }
6
+
7
+ context 'string setter methods' do
8
+ (AppScrollsScrolls::Scroll::ATTRIBUTES - ['config']).each do |setter|
9
+ it "should be able to set #{setter} with an argument" do
10
+ subject.send(setter + '=', "test")
11
+ subject.send(setter).should == 'test'
12
+ end
13
+
14
+ it 'should be able to get the value from the instance' do
15
+ subject.send(setter + '=', 'test')
16
+ subject.new.send(setter).should == subject.send(setter)
17
+ end
18
+ end
19
+ end
20
+
21
+ describe '.attributes' do
22
+ it 'should be accessible from the instance' do
23
+ subject.new.attributes.should == subject.attributes
24
+ end
25
+ end
26
+
27
+ describe '.generate' do
28
+ it 'should work with a string and hash as arguments' do
29
+ scroll = AppScrollsScrolls::Scroll.generate('some_key', '# some code', :name => "Example")
30
+ scroll.superclass.should == AppScrollsScrolls::Scroll
31
+ end
32
+
33
+ it 'should work with an IO object' do
34
+ file = StringIO.new <<-RUBY
35
+ # this is an example
36
+
37
+ __END__
38
+
39
+ category: example
40
+ name: This is an Example
41
+ description: You know it's an exmaple.
42
+ RUBY
43
+ scroll = AppScrollsScrolls::Scroll.generate('just_a_test', file)
44
+ scroll.template.should == '# this is an example'
45
+ scroll.category.should == 'example'
46
+ scroll.name.should == 'This is an Example'
47
+ end
48
+
49
+ it 'should raise an exception if the file is incorrectly formatted' do
50
+ file = StringIO.new <<-RUBY
51
+ # just ruby, no YAML
52
+ RUBY
53
+ lambda{AppScrollsScrolls::Scroll.generate('testing',file)}.should raise_error(ArgumentError)
54
+ end
55
+ end
56
+
57
+ describe '#compile' do
58
+ it 'should say the name' do
59
+ subject.name = "Awesome Sauce"
60
+ subject.new.compile.should be_include("say_scroll 'Awesome Sauce'")
61
+ end
62
+
63
+ it 'should include the template' do
64
+ subject.template = "This is only a test."
65
+ subject.new.compile.should be_include(subject.template)
66
+ end
67
+ end
68
+ end
69
+
70
+ it 'should set default attributes' do
71
+ scroll = AppScrollsScrolls::Scroll.generate('abc','# test')
72
+
73
+ AppScrollsScrolls::Scroll::DEFAULT_ATTRIBUTES.each_pair do |k,v|
74
+ scroll.send(k).should == v
75
+ end
76
+ end
77
+
78
+ context 'Comparable' do
79
+ subject{ AppScrollsScrolls::Scroll }
80
+ it 'a < b.run_after(a)' do
81
+ A = subject.generate('a', '#')
82
+ B = subject.generate('b', '#', :run_after => ['a'])
83
+
84
+ (A < B).should be_true
85
+ end
86
+
87
+ it 'a > b.run_before(a)' do
88
+ A = subject.generate('a', '#')
89
+ B = subject.generate('b', '#', :run_before => ['a'])
90
+
91
+ (A > B).should be_true
92
+ end
93
+
94
+ after do
95
+ Object.send :remove_const, :A if defined?(A)
96
+ Object.send :remove_const, :B if defined?(B)
97
+ end
98
+ end
99
+ end
100
+
101
+ __END__
102
+
103
+ this is a test
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ # This is a simple set of tests to make sure that
4
+ # all of the scrolls conform to the base requirements.
5
+
6
+ AppScrollsScrolls::Scrolls.list_classes.each do |scroll|
7
+ describe scroll do
8
+ it("should have a name"){ scroll.name.should be_kind_of(String) }
9
+ it("should have a description"){ scroll.description.should be_kind_of(String) }
10
+ it("should have a template"){ scroll.template.should be_kind_of(String) }
11
+ it("should be able to compile"){ scroll.new.compile.should be_kind_of(String) }
12
+
13
+ it "should have a string or nil category" do
14
+ if scroll.category
15
+ scroll.category.should be_kind_of(String)
16
+ end
17
+ end
18
+
19
+ it "should have a Config or nil config" do
20
+ if scroll.config
21
+ scroll.config.should be_kind_of(AppScrollsScrolls::Config)
22
+ end
23
+ end
24
+
25
+ it "should be in the list" do
26
+ AppScrollsScrolls::Scrolls.list_classes.should be_include(scroll)
27
+ AppScrollsScrolls::Scrolls.list.should be_include(scroll.key)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppScrollsScrolls::Scrolls do
4
+ subject{ AppScrollsScrolls::Scrolls }
5
+ let(:scroll){ AppScrollsScrolls::Scroll.generate("scroll_test", "# Testing", :name => "Test Scroll", :category => "test", :description => "Just a test.")}
6
+
7
+ before(:all) do
8
+ AppScrollsScrolls::Scrolls.add(scroll)
9
+ end
10
+
11
+ it '.list_classes should include scroll classes' do
12
+ subject.list_classes.should be_include(scroll)
13
+ end
14
+
15
+ it '.list should include scroll keys' do
16
+ subject.list.should be_include('scroll_test')
17
+ end
18
+
19
+ describe '.for' do
20
+ it 'should find for a given category' do
21
+ AppScrollsScrolls::Scrolls.for('test').should be_include('scroll_test')
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe AppScrollsScrolls::Template do
4
+ subject{ AppScrollsScrolls::Template }
5
+ let(:scroll){ AppScrollsScrolls::Scroll.generate('name','# test') }
6
+
7
+ describe '#initialize' do
8
+ it 'should work with classes' do
9
+ subject.new([scroll]).scrolls.should == [scroll]
10
+ end
11
+ end
12
+
13
+ describe '#scrolls_with_dependencies' do
14
+ def s(*deps)
15
+ mock(:Class, :requires => deps, :superclass => AppScrollsScrolls::Scroll)
16
+ end
17
+
18
+ def scroll(name)
19
+ AppScrollsScrolls::Scrolls[name]
20
+ end
21
+
22
+ subject do
23
+ @template = AppScrollsScrolls::Template.new([])
24
+ @template.stub!(:scrolls).and_return(@scrolls)
25
+ @template.stub!(:scroll_classes).and_return(@scrolls)
26
+ @template
27
+ end
28
+
29
+ it 'should return the same number scrolls if none have dependencies' do
30
+ @scrolls = [s, s]
31
+ subject.scrolls_with_dependencies.size.should == 2
32
+ end
33
+
34
+ it 'should handle simple dependencies' do
35
+ @scrolls = [s(s, s), s(s)]
36
+ subject.scrolls_with_dependencies.size.should == 5
37
+ end
38
+
39
+ it 'should handle multi-level dependencies' do
40
+ @scrolls = [s(s(s))]
41
+ subject.scrolls_with_dependencies.size.should == 3
42
+ end
43
+
44
+ it 'should uniqify' do
45
+ a = s
46
+ b = s(a)
47
+ c = s(s, a, b)
48
+ @scrolls = [a,b,c]
49
+ subject.scrolls_with_dependencies.size.should == 4
50
+ end
51
+
52
+ it 'should resolve and sort' do
53
+ template = AppScrollsScrolls::Template.new([scroll('eycloud')])
54
+ template.resolve_scrolls.should == [scroll('eycloud_recipes_on_deploy'), scroll('git'), scroll('github'), scroll('eycloud')]
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+ Bundler.setup
3
+ require 'rspec'
4
+
5
+ Dir[File.dirname(__FILE__) + '/support/*'].each{|path| require path}
6
+
7
+ require 'appscrolls'
8
+
9
+ RSpec.configure do |config|
10
+
11
+ end
@@ -0,0 +1,17 @@
1
+ class RailsDirectory
2
+ def initialize(path)
3
+ @path = path
4
+ end
5
+
6
+ def file_path(path)
7
+ File.join(@path, path)
8
+ end
9
+
10
+ def has_file?(path)
11
+ File.exist?(file_path(path))
12
+ end
13
+
14
+ def [](path)
15
+ File.open(file_path(path)).read
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ class TemplateRunner
2
+ attr_reader :template, :config, :app_name, :dir, :rails_dir, :output
3
+ def initialize(template, config)
4
+ @template = template
5
+ @config = config
6
+ end
7
+
8
+ def run(app_name = 'rails_app')
9
+ @app_name = app_name
10
+ @dir = Dir.mktmpdir
11
+ @rails_dir = File.join(@dir, @app_name)
12
+ Dir.chrdir(@dir) do
13
+ template_file = File.open 'template.rb', 'w'
14
+ template_file.write
15
+ template_file.close
16
+ @output = `rails new #{@app_name} -m template.rb`
17
+ end
18
+ @output
19
+ end
20
+
21
+ def rails
22
+ RailsDirectory.new(@rails_dir)
23
+ end
24
+
25
+ def clean
26
+ FileUtils.remove_entry_secure @dir
27
+ end
28
+ end
@@ -0,0 +1,45 @@
1
+ def scrolls; @scrolls end
2
+ def scroll?(name); @scrolls.include?(name) end
3
+
4
+ def say_custom(tag, text); say "\033[1m\033[36m" + tag.to_s.rjust(10) + "\033[0m" + " #{text}" end
5
+ def say_scroll(name); say "\033[1m\033[36m" + "scroll".rjust(10) + "\033[0m" + " Running #{name} scroll..." end
6
+ def say_wizard(text); say_custom(@current_scroll || 'wizard', text) end
7
+
8
+ def ask_wizard(question)
9
+ ask "\033[1m\033[30m\033[46m" + (@current_scroll || "prompt").rjust(10) + "\033[0m\033[36m" + " #{question}\033[0m"
10
+ end
11
+
12
+ def yes_wizard?(question)
13
+ answer = ask_wizard(question + " \033[33m(y/n)\033[0m")
14
+ case answer.downcase
15
+ when "yes", "y"
16
+ true
17
+ when "no", "n"
18
+ false
19
+ else
20
+ yes_wizard?(question)
21
+ end
22
+ end
23
+
24
+ def no_wizard?(question); !yes_wizard?(question) end
25
+
26
+ def multiple_choice(question, choices)
27
+ say_custom('question', question)
28
+ values = {}
29
+ choices.each_with_index do |choice,i|
30
+ values[(i + 1).to_s] = choice[1]
31
+ say_custom (i + 1).to_s + ')', choice[0]
32
+ end
33
+ answer = ask_wizard("Enter your selection:") while !values.keys.include?(answer)
34
+ values[answer]
35
+ end
36
+
37
+ @current_scroll = nil
38
+ @configs = {}
39
+
40
+ @after_blocks = []
41
+ def after_bundler(&block); @after_blocks << [@current_scroll, block]; end
42
+ @after_everything_blocks = []
43
+ def after_everything(&block); @after_everything_blocks << [@current_scroll, block]; end
44
+ @before_configs = {}
45
+ def before_config(&block); @before_configs[@current_scroll] = block; end
@@ -0,0 +1,44 @@
1
+ # >---------------------------------------------------------------------------<
2
+ #
3
+ # ___ ____ ____
4
+ # / _ | ___ ___ / __/__________ / / /__
5
+ # / __ |/ _ \/ _ \ _\ \/ __/ __/ _ \/ / (_-<
6
+ # /_/ |_/ .__/ .__/ /___/\__/_/ \___/_/_/___/
7
+ # /_/ /_/
8
+ #
9
+ # This template was generated by App Scrolls, the amazing and awesome Rails
10
+ # application template builder. Get started at http://appscrolls.org
11
+ #
12
+ # >---------------------------------------------------------------------------<
13
+
14
+ # >----------------------------[ Initial Setup ]------------------------------<
15
+
16
+ initializer 'generators.rb', <<-RUBY
17
+ Rails.application.config.generators do |g|
18
+ end
19
+ RUBY
20
+
21
+ @scrolls = <%= resolve_scrolls.map(&:key).inspect %>
22
+
23
+ <%= render "helpers" %>
24
+
25
+ <% resolve_scrolls.each do |scroll| %>
26
+ <%= render 'scroll', scroll.get_binding %>
27
+ <% end %>
28
+
29
+ <% if custom_code? %># >-----------------------------[ Custom Code ]-------------------------------<
30
+
31
+ <%= custom_code %><% end %>
32
+
33
+ @current_scroll = nil
34
+
35
+ # >-----------------------------[ Run Bundler ]-------------------------------<
36
+
37
+ say_wizard "Running Bundler install. This will take a while."
38
+ run 'bundle install'
39
+ say_wizard "Running after Bundler callbacks."
40
+ @after_blocks.each{|b| config = @configs[b[0]] || {}; @current_scroll = b[0]; b[1].call}
41
+
42
+ @current_scroll = nil
43
+ say_wizard "Running after everything callbacks."
44
+ @after_everything_blocks.each{|b| config = @configs[b[0]] || {}; @current_scroll = b[0]; b[1].call}
@@ -0,0 +1,28 @@
1
+ gem '<%= name %>'
2
+
3
+ after_bundler do
4
+
5
+ end
6
+
7
+ after_everything do
8
+
9
+ end
10
+
11
+ __END__
12
+
13
+ name: <%= name.humanize.capitalize %>
14
+ description:
15
+ website:
16
+ author: <%= `whoami`.strip %>
17
+
18
+ requires: []
19
+ run_after: []
20
+ run_before: []
21
+
22
+ category: other # authentication, testing, persistence, javascript, css, services, deployment, and templating
23
+ # exclusive:
24
+
25
+ # config:
26
+ # - foo:
27
+ # type: boolean
28
+ # prompt: "Is foo true?"
@@ -0,0 +1,10 @@
1
+ # ><%= "[ #{name} ]".center(75,'-') %><
2
+
3
+ @current_scroll = "<%= key %>"
4
+ @before_configs["<%= key %>"].call if @before_configs["<%= key %>"]
5
+ say_scroll '<%= name %>'
6
+
7
+ <%= config.compile if config %>
8
+ @configs[@current_scroll] = config
9
+
10
+ <%= template %>
@@ -0,0 +1,3 @@
1
+ module AppScrollsScrolls
2
+ VERSION = "0.7.0"
3
+ end
metadata ADDED
@@ -0,0 +1,297 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: appscrolls
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Michael Bleigh
9
+ - Dr Nic Williams
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-04-09 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: i18n
17
+ requirement: &70151529778680 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70151529778680
26
+ - !ruby/object:Gem::Dependency
27
+ name: json
28
+ requirement: &70151529791620 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - =
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.5
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70151529791620
37
+ - !ruby/object:Gem::Dependency
38
+ name: activesupport
39
+ requirement: &70151529788200 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: '3.0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *70151529788200
48
+ - !ruby/object:Gem::Dependency
49
+ name: thor
50
+ requirement: &70151529785580 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *70151529785580
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ requirement: &70151529798100 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 2.5.0
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *70151529798100
70
+ - !ruby/object:Gem::Dependency
71
+ name: guard-rspec
72
+ requirement: &70151529765520 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *70151529765520
81
+ - !ruby/object:Gem::Dependency
82
+ name: cucumber
83
+ requirement: &70151529757920 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *70151529757920
92
+ - !ruby/object:Gem::Dependency
93
+ name: guard-cucumber
94
+ requirement: &70151529804360 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *70151529804360
103
+ - !ruby/object:Gem::Dependency
104
+ name: bundler
105
+ requirement: &70151529815720 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.1.0
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: *70151529815720
114
+ - !ruby/object:Gem::Dependency
115
+ name: guard-bundler
116
+ requirement: &70151529828480 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *70151529828480
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails
127
+ requirement: &70151529843540 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '3.0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: *70151529843540
136
+ description: ! 'The App Scrolls is a magical tool to generate new Rails and modify
137
+ existing Rails applications (coming) to include your favourite, powerful magic. '
138
+ email:
139
+ - michael@intridea.com
140
+ - drnicwilliams@gmail.com
141
+ executables:
142
+ - appscrolls
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - .gitignore
147
+ - .rspec
148
+ - .travis.yml
149
+ - ChangeLog.md
150
+ - Gemfile
151
+ - Guardfile
152
+ - MIT_LICENSE
153
+ - README.md
154
+ - Rakefile
155
+ - appscrolls.gemspec
156
+ - bin/appscrolls
157
+ - features/step_definitions/common_steps.rb
158
+ - features/support/common.rb
159
+ - features/support/env.rb
160
+ - lib/appscrolls.rb
161
+ - lib/appscrolls/command.rb
162
+ - lib/appscrolls/config.rb
163
+ - lib/appscrolls/scroll.rb
164
+ - lib/appscrolls/scrolls.rb
165
+ - lib/appscrolls/template.rb
166
+ - lib/rails/generators/.DS_Store
167
+ - lib/rails/generators/run_template/USAGE
168
+ - lib/rails/generators/run_template/run_template_generator.rb
169
+ - sample.rb
170
+ - scrolls/active_admin.rb
171
+ - scrolls/capybara.rb
172
+ - scrolls/cucumber.rb
173
+ - scrolls/delayed_job.rb
174
+ - scrolls/env_yaml.rb
175
+ - scrolls/eycloud.rb
176
+ - scrolls/eycloud_recipes_on_deploy.rb
177
+ - scrolls/git.rb
178
+ - scrolls/github.rb
179
+ - scrolls/guard.rb
180
+ - scrolls/jquery.rb
181
+ - scrolls/mysql.rb
182
+ - scrolls/passenger.rb
183
+ - scrolls/postgresql.rb
184
+ - scrolls/prototype.rb
185
+ - scrolls/puma.rb
186
+ - scrolls/rails_basics.rb
187
+ - scrolls/redis.rb
188
+ - scrolls/resque.rb
189
+ - scrolls/rspec.rb
190
+ - scrolls/simple_form.rb
191
+ - scrolls/split.rb
192
+ - scrolls/spork.rb
193
+ - scrolls/sqlite3.rb
194
+ - scrolls/test_unit.rb
195
+ - scrolls/thin.rb
196
+ - scrolls/twitter_bootstrap.rb
197
+ - scrolls/unicorn.rb
198
+ - scrolls/zzz/activerecord.rb
199
+ - scrolls/zzz/cancan.rb
200
+ - scrolls/zzz/carrierwave.rb
201
+ - scrolls/zzz/carrierwave_direct.rb
202
+ - scrolls/zzz/cartographer.rb
203
+ - scrolls/zzz/devise.rb
204
+ - scrolls/zzz/devise_invitable.rb
205
+ - scrolls/zzz/event_calendar.rb
206
+ - scrolls/zzz/factory_girl.rb
207
+ - scrolls/zzz/ffaker.rb
208
+ - scrolls/zzz/fixture_builder.rb
209
+ - scrolls/zzz/forgery.rb
210
+ - scrolls/zzz/haml.rb
211
+ - scrolls/zzz/heroku.rb
212
+ - scrolls/zzz/hoptoad.rb
213
+ - scrolls/zzz/inherited_resources.rb
214
+ - scrolls/zzz/intercom.rb
215
+ - scrolls/zzz/jammit.rb
216
+ - scrolls/zzz/jasmine.rb
217
+ - scrolls/zzz/mini_magick.rb
218
+ - scrolls/zzz/mongo_mapper.rb
219
+ - scrolls/zzz/mongohq.rb
220
+ - scrolls/zzz/mongoid.rb
221
+ - scrolls/zzz/mootools.rb
222
+ - scrolls/zzz/newrelic.rb
223
+ - scrolls/zzz/nifty_generators.rb
224
+ - scrolls/zzz/oa_oauth.rb
225
+ - scrolls/zzz/omniauth.rb
226
+ - scrolls/zzz/paper_trail.rb
227
+ - scrolls/zzz/pow.rb
228
+ - scrolls/zzz/rails_admin.rb
229
+ - scrolls/zzz/rails_dev_tweaks.rb
230
+ - scrolls/zzz/rails_erd.rb
231
+ - scrolls/zzz/rails_footnotes.rb
232
+ - scrolls/zzz/ransack.rb
233
+ - scrolls/zzz/rmagick.rb
234
+ - scrolls/zzz/sass.rb
235
+ - scrolls/zzz/sequel.rb
236
+ - scrolls/zzz/settingslogic.rb
237
+ - scrolls/zzz/shoulda_matchers.rb
238
+ - scrolls/zzz/sidekiq.rb
239
+ - scrolls/zzz/slim.rb
240
+ - scrolls/zzz/thinking_sphinx.rb
241
+ - scrolls/zzz/vanity.rb
242
+ - spec/appscrolls/config_spec.rb
243
+ - spec/appscrolls/scroll_spec.rb
244
+ - spec/appscrolls/scrolls/sanity_spec.rb
245
+ - spec/appscrolls/scrolls_spec.rb
246
+ - spec/appscrolls/template_spec.rb
247
+ - spec/spec_helper.rb
248
+ - spec/support/rails_directory.rb
249
+ - spec/support/template_runner.rb
250
+ - templates/helpers.erb
251
+ - templates/layout.erb
252
+ - templates/new_scroll.erb
253
+ - templates/scroll.erb
254
+ - version.rb
255
+ homepage: http://appscrolls.org/
256
+ licenses: []
257
+ post_install_message:
258
+ rdoc_options: []
259
+ require_paths:
260
+ - lib
261
+ required_ruby_version: !ruby/object:Gem::Requirement
262
+ none: false
263
+ requirements:
264
+ - - ! '>='
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ segments:
268
+ - 0
269
+ hash: 2425115342394268705
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ none: false
272
+ requirements:
273
+ - - ! '>='
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ segments:
277
+ - 0
278
+ hash: 2425115342394268705
279
+ requirements: []
280
+ rubyforge_project:
281
+ rubygems_version: 1.8.17
282
+ signing_key:
283
+ specification_version: 3
284
+ summary: The App Scrolls is a magical tool to generate new Rails and modify existing
285
+ Rails applications (coming) to include your favourite, powerful magic.
286
+ test_files:
287
+ - features/step_definitions/common_steps.rb
288
+ - features/support/common.rb
289
+ - features/support/env.rb
290
+ - spec/appscrolls/config_spec.rb
291
+ - spec/appscrolls/scroll_spec.rb
292
+ - spec/appscrolls/scrolls/sanity_spec.rb
293
+ - spec/appscrolls/scrolls_spec.rb
294
+ - spec/appscrolls/template_spec.rb
295
+ - spec/spec_helper.rb
296
+ - spec/support/rails_directory.rb
297
+ - spec/support/template_runner.rb