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,22 @@
1
+ gem 'ffaker'
2
+
3
+ after_bundler do
4
+ # TODO - necessary to add this? or will bundler do it?
5
+ inject_into_file "spec/spec_helper.rb", :after => "require 'rspec/rails'\n" do
6
+ "require 'ffaker'\n"
7
+ end
8
+ end
9
+
10
+ __END__
11
+
12
+ name: ffaker
13
+ description: "Fast Faker: Faker refactored for speed"
14
+ author: lightyrs
15
+
16
+ # necessary?
17
+ requires: [rspec]
18
+ run_after: [rspec]
19
+
20
+ category: testing
21
+ exclusive: fake-data
22
+ tags: [fake-data]
@@ -0,0 +1,35 @@
1
+ gem 'fixture_builder', :group => [:test]
2
+ gem 'mocha', :group => [:test]
3
+
4
+ after_everything do
5
+
6
+ create_file "spec/support/fixture_builder.rb", <<-RUBY
7
+ FixtureBuilder.configure do |fbuilder|
8
+ # rebuild fixtures automatically when these files change:
9
+ fbuilder.files_to_check += Dir["spec/factories/*.rb", "spec/support/fixture_builder.rb"]
10
+
11
+ # now declare objects
12
+ fbuilder.factory do
13
+
14
+ end
15
+ end
16
+ RUBY
17
+
18
+ inject_into_file "spec/spec_helper.rb", :after => "require 'rspec/rails'\n" do
19
+ "require 'spec/support/fixture_builder.rb'\n"
20
+ end
21
+
22
+ gsub_file "spec/spec_helper.rb", "config.mock_with :rspec", "# config.mock_with :rspec"
23
+ gsub_file "spec/spec_helper.rb", "# config.mock_with :mocha", " config.mock_with :mocha"
24
+
25
+ end
26
+
27
+ __END__
28
+
29
+ name: FixtureBuilder
30
+ description: "Allows you to build file fixtures from an object mother factory."
31
+ author: lightyrs
32
+
33
+ category: testing
34
+ run_after: [rspec]
35
+ requires: [rspec]
@@ -0,0 +1,15 @@
1
+ gem 'forgery'
2
+
3
+ after_bundler do
4
+ generate "forgery"
5
+ end
6
+
7
+ __END__
8
+
9
+ name: Forgery
10
+ description: A fake data generator that provides not only a host of basics and a rememberable syntax, but a customizable library to boot.
11
+
12
+ category: testing
13
+ exclusive: fake-data
14
+ tags: [fake-data]
15
+
@@ -0,0 +1,11 @@
1
+ gem 'haml', '>= 3.0.0'
2
+ gem 'haml-rails'
3
+
4
+ __END__
5
+
6
+ name: HAML
7
+ description: "Utilize HAML for templating."
8
+ author: mbleigh
9
+
10
+ category: templating
11
+ exclusive: templating
@@ -0,0 +1,58 @@
1
+ heroku_name = app_name.gsub('_','')
2
+
3
+ after_everything do
4
+ if config['create']
5
+ say_wizard "Creating Heroku app '#{heroku_name}.heroku.com'"
6
+ while !system("heroku create #{heroku_name}")
7
+ heroku_name = ask_wizard("What do you want to call your app? ")
8
+ end
9
+ end
10
+
11
+ if config['staging']
12
+ staging_name = "#{heroku_name}-staging"
13
+ say_wizard "Creating staging Heroku app '#{staging_name}.heroku.com'"
14
+ while !system("heroku create #{staging_name}")
15
+ staging_name = ask_wizard("What do you want to call your staging app?")
16
+ end
17
+ git :remote => "rm heroku"
18
+ git :remote => "add production git@heroku.com:#{heroku_name}.git"
19
+ git :remote => "add staging git@heroku.com:#{staging_name}.git"
20
+ say_wizard "Created branches 'production' and 'staging' for Heroku deploy."
21
+ end
22
+
23
+ unless config['domain'].blank?
24
+ run "heroku addons:add custom_domains"
25
+ run "heroku domains:add #{config['domain']}"
26
+ end
27
+
28
+ git :push => "#{config['staging'] ? 'staging' : 'heroku'} master" if config['deploy']
29
+ end
30
+
31
+ __END__
32
+
33
+ name: Heroku
34
+ description: Create Heroku application and instantly deploy.
35
+ author: mbleigh
36
+
37
+ requires: [git]
38
+ run_after: [git]
39
+ exclusive: deployment
40
+ category: deployment
41
+ tags: [provider]
42
+
43
+ config:
44
+ - create:
45
+ prompt: "Automatically create appname.heroku.com?"
46
+ type: boolean
47
+ - staging:
48
+ prompt: "Create staging app? (appname-staging.heroku.com)"
49
+ type: boolean
50
+ if: create
51
+ - domain:
52
+ prompt: "Specify custom domain (or leave blank):"
53
+ type: string
54
+ if: create
55
+ - deploy:
56
+ prompt: "Deploy immediately?"
57
+ type: boolean
58
+ if: create
@@ -0,0 +1,34 @@
1
+
2
+ gem 'hoptoad_notifier'
3
+
4
+ if config['use_heroku']
5
+ after_everything do
6
+ say_wizard "Adding hoptoad:basic Heroku addon (you can always upgrade later)"
7
+ run "heroku addons:add hoptoad:basic"
8
+ generate "hoptoad --heroku"
9
+ end
10
+ else
11
+ after_bundler do
12
+ generate "hoptoad --api-key #{config['api_key']}"
13
+ end
14
+ end
15
+
16
+ __END__
17
+
18
+ name: Hoptoad
19
+ description: Add Hoptoad exception reporting to your application.
20
+
21
+ category: services
22
+ exclusive: exception_notification
23
+ tags: [exception_notification]
24
+ run_after: [heroku]
25
+
26
+ config:
27
+ - use_heroku:
28
+ type: boolean
29
+ prompt: "Use the Hoptoad Heroku addon?"
30
+ if_scroll: heroku
31
+ - api_key:
32
+ prompt: "Enter Hoptoad API Key:"
33
+ type: string
34
+ unless: use_heroku
@@ -0,0 +1,12 @@
1
+ gem 'inherited_resources'
2
+
3
+ __END__
4
+
5
+ name: Inherited Resources
6
+ description: "Use Inherited Resources to DRY your controllers"
7
+ author: jonochang
8
+
9
+ exclusive: controllers
10
+ category: controllers
11
+ tags: [controllers]
12
+
@@ -0,0 +1,35 @@
1
+ # gem 'intercom-ruby', :group => [:development] # for API communication
2
+ gem 'intercom-rails' # to generate the javascript in the layout
3
+
4
+
5
+ # during initial generation (after "rails new")
6
+ # signin to intercom.io, fetch token, or enter tokens
7
+ # create new intercom app and get metadata
8
+
9
+
10
+ after_bundler do
11
+ generate %Q|intercom:install #{config["intercom_app_id"]}|
12
+ end
13
+
14
+ after_everything do
15
+ end
16
+
17
+
18
+ __END__
19
+
20
+ name: Intercom
21
+ description: Install intercom.io
22
+ author: drnic
23
+ website: http://intercom.io
24
+
25
+ requires: []
26
+ run_after: []
27
+ run_before: []
28
+
29
+ category: other # authentication, testing, persistence, javascript, css, services, deployment, and templating
30
+ # exclusive:
31
+
32
+ config:
33
+ - intercom_app_id:
34
+ type: string
35
+ prompt: "What is your Intercom app id for this new, fantastic app?"
@@ -0,0 +1,43 @@
1
+ gem 'jammit'
2
+
3
+ after_bundler do
4
+ if config['pre_commit']
5
+ say_wizard "Adding git pre-commit hook to compile assets..."
6
+ create_file ".git/hooks/pre-commit", <<-BASH
7
+ #!/bin/sh
8
+
9
+ echo "Packaging assets with Jammit..."
10
+ jammit
11
+ git add public/assets
12
+ BASH
13
+ run "chmod +x .git/hooks/pre-commit"
14
+ end
15
+
16
+ create_file "config/assets.yml", <<-YAML
17
+ javascripts:
18
+ app:
19
+ - public/javascripts/*.js
20
+ stylesheets:
21
+ app:
22
+ - public/stylesheets/*.css
23
+ YAML
24
+
25
+ gsub_file "app/views/layouts/application.html.erb", "<%= javascript_include_tag :defaults %>", "<%= include_javascripts :app %>"
26
+ gsub_file "app/views/layouts/application.html.erb", "<%= stylesheet_link_tag :all %>", "<%= include_stylesheets :app %>"
27
+ end
28
+
29
+ __END__
30
+
31
+ name: Jammit
32
+ description: "Use Jammit to package your application's assets."
33
+ author: mbleigh
34
+ # http://documentcloud.github.com/jammit/
35
+
36
+ exclusive: asset_packaging
37
+ category: assets
38
+ tags: [assets, asset_packaging, packaging]
39
+
40
+ config:
41
+ - pre_commit:
42
+ type: boolean
43
+ prompt: "Create a git pre-commit hook to locally generate assets?"
@@ -0,0 +1,12 @@
1
+ gem 'jasmine', :group => [:development, :test]
2
+
3
+ after_bundler do
4
+ generate "jasmine:install"
5
+ end
6
+
7
+ __END__
8
+
9
+ category: testing
10
+ name: Jasmine
11
+ description: Install jasmine for javascript testing
12
+ author: jtarchie
@@ -0,0 +1,13 @@
1
+ gem 'mini_magick'
2
+
3
+ __END__
4
+
5
+ name: Mini Magick
6
+ description: "Use Mini Magick to manipulate images via ImageMagick"
7
+ author: jonochang
8
+
9
+ category: other
10
+ exclusive: image-manipulation
11
+ tags: [image-manipulation]
12
+
13
+ # TODO eycloud
@@ -0,0 +1,20 @@
1
+ gem 'bson_ext'
2
+ gem 'mongo_mapper', '>=0.9'
3
+
4
+ after_bundler do
5
+ generate 'mongo_mapper:config'
6
+ end
7
+
8
+ __END__
9
+
10
+ name: MongoMapper
11
+ description: "Use MongoDB with MongoMapper as your primary datastore."
12
+ author: mbleigh
13
+
14
+ exclusive: orm
15
+ category: persistence
16
+ tags: [mongodb, orm]
17
+
18
+ args: ["-O"]
19
+
20
+ # TODO eycloud
@@ -0,0 +1,61 @@
1
+ if config['use_heroku']
2
+
3
+ header = <<-YAML
4
+ <% if ENV['MONGOHQ_URL'] %>
5
+ <% mongohq = URI.parse(ENV['MONGOHQ_URL']) %>
6
+ mongohq:
7
+ host: <%= mongohq.host %>
8
+ port: <%= mongohq.port %>
9
+ database: <%= mongohq.path.sub '/', '' %>
10
+ username: <%= mongohq.user %>
11
+ password: <%= mongohq.password %>
12
+ <% end %>
13
+ YAML
14
+
15
+ after_everything do
16
+ say_wizard 'Adding mongohq:free addon (you can always upgrade later)'
17
+ system 'heroku addons:add mongohq:free'
18
+ end
19
+ else
20
+ mongohq = URI.parse(config['uri'])
21
+
22
+ header = <<-YAML
23
+ mongohq:
24
+ host: #{mongohq.host}
25
+ port: #{mongohq.port}
26
+ database: #{mongohq.path.sub '/',''}
27
+ username: #{mongohq.user}
28
+ password: #{mongohq.password}
29
+ YAML
30
+ end
31
+
32
+ after_bundler do
33
+ mongo_yml = "config/mongo#{'id' if scroll?('mongoid')}.yml"
34
+
35
+ prepend_file mongo_yml, header
36
+ inject_into_file mongo_yml, " <<: *mongohq\n", :after => "production:\n <<: *defaults\n"
37
+ end
38
+
39
+ __END__
40
+
41
+ name: MongoHQ
42
+ description: "Utilize MongoHQ as the production data host for your application."
43
+ author: mbleigh
44
+
45
+ requires_any: [mongo_mapper, mongoid]
46
+ run_after: [mongo_mapper, mongoid, heroku]
47
+ exclusive: mongodb_host
48
+ category: services
49
+ tags: [mongodb]
50
+
51
+ config:
52
+ - use_heroku:
53
+ type: boolean
54
+ prompt: "Use the MongoHQ Heroku addon?"
55
+ if_scroll: heroku
56
+ - uri:
57
+ type: string
58
+ prompt: "Enter your MongoHQ URI:"
59
+ unless: use_heroku
60
+
61
+ # TODO eycloud partners
@@ -0,0 +1,20 @@
1
+ gem 'bson_ext'
2
+ gem 'mongoid', '>= 2.0.1'
3
+
4
+ after_bundler do
5
+ generate 'mongoid:config'
6
+ end
7
+
8
+ __END__
9
+
10
+ name: Mongoid
11
+ description: "Utilize MongoDB with Mongoid as the ORM."
12
+ author: mbleigh
13
+
14
+ category: persistence
15
+ exclusive: orm
16
+ tags: [orm, mongodb]
17
+
18
+ args: ["-O"]
19
+
20
+ # TODO eycloud
@@ -0,0 +1,23 @@
1
+ inside "public/javascripts" do
2
+ get "https://github.com/kevinvaldek/mootools-ujs/raw/master/Source/rails.js", "rails.js"
3
+ get "http://ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js", "mootools.min.js"
4
+ end
5
+
6
+ gsub_file "config/application.rb", /# JavaScript.*\n/, ""
7
+ gsub_file "config/application.rb", /# config\.action_view\.javascript.*\n/, ""
8
+
9
+ application do
10
+ "\n config.action_view.javascript_expansions[:defaults] = %w(mootools.min rails)\n"
11
+ end
12
+
13
+ __END__
14
+
15
+ name: MooTools
16
+ description: "Adds MooTools and MooTools-compatible UJS helpers."
17
+ author: mbleigh
18
+
19
+ exclusive: javascript_framework
20
+ category: assets
21
+ tags: [javascript, framework]
22
+
23
+ args: ["-J"]
@@ -0,0 +1,11 @@
1
+ gem 'newrelic_rpm'
2
+
3
+ __END__
4
+
5
+ name: New Relic RPM
6
+ description: Monitor applications with New Relic
7
+ author: drnic
8
+ website: https://support.cloud.engineyard.com/entries/21016493-monitor-applications-with-new-relic-on-engine-yard-cloud
9
+
10
+ category: deployment
11
+ exclusive: app-monitoring