thyone_creator 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.
Files changed (63) hide show
  1. data/bin/thyone +7 -0
  2. data/lib/rails_wizard/command.rb +116 -0
  3. data/lib/rails_wizard/config.rb +88 -0
  4. data/lib/rails_wizard/recipe.rb +106 -0
  5. data/lib/rails_wizard/recipes.rb +38 -0
  6. data/lib/rails_wizard/template.rb +73 -0
  7. data/lib/rails_wizard.rb +10 -0
  8. data/recipes/action_mailer.rb +123 -0
  9. data/recipes/active_admin.rb +44 -0
  10. data/recipes/activerecord.rb +37 -0
  11. data/recipes/add_user.rb +129 -0
  12. data/recipes/airbrake.rb +34 -0
  13. data/recipes/backbone.rb +23 -0
  14. data/recipes/capybara.rb +34 -0
  15. data/recipes/cleanup.rb +40 -0
  16. data/recipes/cloudfiles.rb +36 -0
  17. data/recipes/compass.rb +46 -0
  18. data/recipes/compass_960.rb +48 -0
  19. data/recipes/cucumber.rb +75 -0
  20. data/recipes/datamapper.rb +111 -0
  21. data/recipes/devise.rb +114 -0
  22. data/recipes/extras.rb +80 -0
  23. data/recipes/git.rb +40 -0
  24. data/recipes/guard.rb +99 -0
  25. data/recipes/haml.rb +23 -0
  26. data/recipes/heroku.rb +62 -0
  27. data/recipes/home_page.rb +58 -0
  28. data/recipes/home_page_users.rb +47 -0
  29. data/recipes/html5.rb +153 -0
  30. data/recipes/inherited_resources.rb +23 -0
  31. data/recipes/less.rb +12 -0
  32. data/recipes/mongohq.rb +59 -0
  33. data/recipes/mongoid.rb +39 -0
  34. data/recipes/mongolab.rb +59 -0
  35. data/recipes/omniauth.rb +192 -0
  36. data/recipes/omniauth_email.rb +82 -0
  37. data/recipes/paperclip.rb +79 -0
  38. data/recipes/rails_admin.rb +21 -0
  39. data/recipes/redis.rb +23 -0
  40. data/recipes/responders.rb +10 -0
  41. data/recipes/resque.rb +25 -0
  42. data/recipes/rspec.rb +133 -0
  43. data/recipes/sass.rb +25 -0
  44. data/recipes/seed_database.rb +76 -0
  45. data/recipes/settingslogic.rb +43 -0
  46. data/recipes/simple_form.rb +54 -0
  47. data/recipes/slim.rb +46 -0
  48. data/recipes/static_page.rb +43 -0
  49. data/recipes/subdomains.rb +121 -0
  50. data/recipes/users_page.rb +165 -0
  51. data/spec/rails_wizard/config_spec.rb +108 -0
  52. data/spec/rails_wizard/recipe_spec.rb +81 -0
  53. data/spec/rails_wizard/recipes/sanity_spec.rb +30 -0
  54. data/spec/rails_wizard/recipes_spec.rb +24 -0
  55. data/spec/rails_wizard/template_spec.rb +78 -0
  56. data/spec/spec_helper.rb +11 -0
  57. data/spec/support/rails_directory.rb +17 -0
  58. data/spec/support/template_runner.rb +28 -0
  59. data/templates/helpers.erb +45 -0
  60. data/templates/layout.erb +83 -0
  61. data/templates/recipe.erb +10 -0
  62. data/version.rb +3 -0
  63. metadata +251 -0
@@ -0,0 +1,79 @@
1
+ if config['paperclip']
2
+ if recipes.include? 'mongoid'
3
+ gem 'mongoid-paperclip'
4
+ else
5
+ gem 'paperclip'
6
+ end
7
+ else
8
+ recipes.delete('paperclip')
9
+ end
10
+
11
+ if config['paperclip']
12
+ after_bundler do
13
+ # Code here is run after Bundler installs all the gems for the project.
14
+ # You can run generators and rake tasks in this section.
15
+ if recipes.include? 'mongoid'
16
+ create_file 'config/initializers/mongoid-paperclip.rb' do
17
+ <<-RUBY
18
+ require 'mongoid_paperclip'
19
+ RUBY
20
+ end
21
+ end
22
+
23
+ if recipes.include? 'cloudfiles'
24
+ # Add Storage module file for paperclip in lib
25
+ get 'https://raw.github.com/gist/2476222/986bf7a49556ac549b75768af5dce2e6e4c67b61/Cloudfilesstorage.rb', 'lib/cloud_files_storage.rb'
26
+ # Add config initialize file
27
+ create_file 'config/initializers/cloudfiles.rb' do
28
+ <<-RUBY
29
+ require 'cloudfiles'
30
+ require 'cloud_files_storage'
31
+ RUBY
32
+ end
33
+
34
+ create_file 'config/rackspace_cloudfiles.yml' do
35
+ <<-YAML
36
+ DEFAULTS: &DEFAULTS
37
+ username: [username]
38
+ api_key: [api_key]
39
+
40
+ development:
41
+ <<: *DEFAULTS
42
+ container: [container name]
43
+
44
+ test:
45
+ <<: *DEFAULTS
46
+ container: [container name]
47
+
48
+ production:
49
+ <<: *DEFAULTS
50
+ container: [container name]
51
+ YAML
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ if config['paperclip']
58
+ after_everything do
59
+ # These blocks are run after the bundler blocks and are reserved for
60
+ # special cases like committing the files to a git repository (something
61
+ # that depends on everything having been generated).
62
+ end
63
+ end
64
+ # A recipe is two parts: the Ruby code and YAML back-matter that comes
65
+ # after a blank line with the __END__ keyword.
66
+
67
+ __END__
68
+
69
+ name: Paperclip
70
+ description: "Use paperclip for file uploading."
71
+ author: merlinvn
72
+
73
+ category: persistence
74
+ tags: [storage]
75
+
76
+ config:
77
+ - paperclip:
78
+ type: boolean
79
+ prompt: "Would you like to use Paperclip to store your files?"
@@ -0,0 +1,21 @@
1
+ gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'
2
+
3
+ after_bundler do
4
+ generate 'rails_admin:install_admin'
5
+ rake 'admin:copy_assets'
6
+ rake 'admin:ckeditor_download' if config['ckeditor']
7
+ end
8
+
9
+ __END__
10
+
11
+ name: RailsAdmin
12
+ description: "Install RailsAdmin to manage data in your application"
13
+ author: alno
14
+
15
+ category: other
16
+
17
+ config:
18
+ - ckeditor:
19
+ type: boolean
20
+ prompt: Install CKEditor?
21
+
data/recipes/redis.rb ADDED
@@ -0,0 +1,23 @@
1
+ if config['redis']
2
+ gem 'redis'
3
+
4
+ after_bundler do
5
+ say_wizard "Generating Redis initializer..."
6
+
7
+ create_file "config/initializers/redis.rb" do <<-RUBY
8
+ REDIS = Redis.new
9
+ RUBY
10
+ end
11
+ end
12
+ else
13
+ recipes.delete('redis')
14
+ end
15
+ __END__
16
+
17
+ name: Redis
18
+ description: "Add Redis as a persistence engine to your application."
19
+ author: mbleigh
20
+
21
+ exclusive: key_value
22
+ category: persistence
23
+ tags: [key_value, cache, session_store]
@@ -0,0 +1,10 @@
1
+ gem 'responders'
2
+ after_bundler do
3
+ generate 'responders:install'
4
+ end
5
+
6
+ __END__
7
+
8
+ name: Responders
9
+ description: "Use Responders (https://github.com/plataformatec/responders)."
10
+ author: allen13
data/recipes/resque.rb ADDED
@@ -0,0 +1,25 @@
1
+ if config['resque']
2
+ gem 'resque'
3
+
4
+ after_bundler do
5
+ say_wizard 'Adding resque.rake task to lib/tasks'
6
+ create_file "lib/tasks/resque.rake" do <<-RUBY
7
+ require 'resque/tasks'
8
+ RUBY
9
+ end
10
+ end
11
+ else
12
+ recipes.delete('resque')
13
+ end
14
+
15
+ __END__
16
+
17
+ name: Resque
18
+ description: "Add Resque to your application."
19
+ author: porta
20
+
21
+ category: worker
22
+ tags: [background, worker]
23
+
24
+ requires: [redis]
25
+ run_after: [redis]
data/recipes/rspec.rb ADDED
@@ -0,0 +1,133 @@
1
+ # Application template recipe for the rails_apps_composer. Check for a newer version here:
2
+ # https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/rspec.rb
3
+
4
+ if config['rspec']
5
+ gem 'rspec-rails', '>= 2.10.1', :group => [:development, :test]
6
+ if recipes.include? 'mongoid'
7
+ # use the database_cleaner gem to reset the test database
8
+ gem 'database_cleaner', '>= 0.7.2', :group => :test
9
+ # include RSpec matchers from the mongoid-rspec gem
10
+ gem 'mongoid-rspec', '>= 1.4.4', :group => :test
11
+ end
12
+ if config['machinist']
13
+ gem 'machinist', :group => :test
14
+ end
15
+ if config['factory_girl']
16
+ gem 'factory_girl_rails', '>= 3.3.0', :group => [:development, :test]
17
+ end
18
+ # add a collection of RSpec matchers and Cucumber steps to make testing email easy
19
+ gem 'email_spec', '>= 1.2.1', :group => :test
20
+ create_file 'features/support/email_spec.rb' do <<-RUBY
21
+ require 'email_spec/cucumber'
22
+ RUBY
23
+ end
24
+ else
25
+ recipes.delete('rspec')
26
+ end
27
+
28
+ # note: there is no need to specify the RSpec generator in the config/application.rb file
29
+
30
+ if config['rspec']
31
+ after_bundler do
32
+ say_wizard "RSpec recipe running 'after bundler'"
33
+ generate 'rspec:install'
34
+ generate 'email_spec:steps'
35
+ inject_into_file 'spec/spec_helper.rb', "require 'email_spec'\n", :after => "require 'rspec/rails'\n"
36
+ inject_into_file 'spec/spec_helper.rb', :after => "RSpec.configure do |config|\n" do <<-RUBY
37
+ config.include(EmailSpec::Helpers)
38
+ config.include(EmailSpec::Matchers)
39
+ RUBY
40
+ end
41
+ if config['machinist']
42
+ say_wizard "Generating blueprints file for Machinist"
43
+ generate 'machinist:install'
44
+ end
45
+
46
+ say_wizard "Removing test folder (not needed for RSpec)"
47
+ run 'rm -rf test/'
48
+
49
+ inject_into_file 'config/application.rb', :after => "Rails::Application\n" do <<-RUBY
50
+
51
+ # don't generate RSpec tests for views and helpers
52
+ config.generators do |g|
53
+ g.view_specs false
54
+ g.helper_specs false
55
+ #{"g.fixture_replacement :machinist" if config['machinist']}
56
+ end
57
+
58
+ RUBY
59
+ end
60
+
61
+
62
+ if recipes.include? 'mongoid'
63
+
64
+ # remove ActiveRecord artifacts
65
+ gsub_file 'spec/spec_helper.rb', /config.fixture_path/, '# config.fixture_path'
66
+ gsub_file 'spec/spec_helper.rb', /config.use_transactional_fixtures/, '# config.use_transactional_fixtures'
67
+
68
+ # reset your application database to a pristine state during testing
69
+ inject_into_file 'spec/spec_helper.rb', :before => "\nend" do
70
+ <<-RUBY
71
+ \n
72
+ # Clean up the database
73
+ require 'database_cleaner'
74
+ config.before(:suite) do
75
+ DatabaseCleaner.strategy = :truncation
76
+ DatabaseCleaner.orm = "mongoid"
77
+ end
78
+
79
+ config.before(:each) do
80
+ DatabaseCleaner.clean
81
+ end
82
+ RUBY
83
+ end
84
+
85
+ # remove either possible occurrence of "require rails/test_unit/railtie"
86
+ gsub_file 'config/application.rb', /require 'rails\/test_unit\/railtie'/, '# require "rails/test_unit/railtie"'
87
+ gsub_file 'config/application.rb', /require "rails\/test_unit\/railtie"/, '# require "rails/test_unit/railtie"'
88
+
89
+ # configure RSpec to use matchers from the mongoid-rspec gem
90
+ create_file 'spec/support/mongoid.rb' do
91
+ <<-RUBY
92
+ RSpec.configure do |config|
93
+ config.include Mongoid::Matchers
94
+ end
95
+ RUBY
96
+ end
97
+ end
98
+
99
+ if recipes.include? 'devise'
100
+ # add Devise test helpers
101
+ create_file 'spec/support/devise.rb' do
102
+ <<-RUBY
103
+ RSpec.configure do |config|
104
+ config.include Devise::TestHelpers, :type => :controller
105
+ end
106
+ RUBY
107
+ end
108
+ end
109
+
110
+ end
111
+ end
112
+
113
+ __END__
114
+
115
+ name: RSpec
116
+ description: "Use RSpec instead of TestUnit."
117
+ author: RailsApps
118
+
119
+ exclusive: unit_testing
120
+ category: testing
121
+
122
+ args: ["-T"]
123
+
124
+ config:
125
+ - rspec:
126
+ type: boolean
127
+ prompt: Would you like to use RSpec instead of TestUnit?
128
+ - factory_girl:
129
+ type: boolean
130
+ prompt: Would you like to use factory_girl for test fixtures with RSpec?
131
+ - machinist:
132
+ type: boolean
133
+ prompt: Would you like to use machinist for test fixtures with RSpec?
data/recipes/sass.rb ADDED
@@ -0,0 +1,25 @@
1
+
2
+ if config['sass']
3
+ gem 'sass', '>= 3.1.12'
4
+ after_bundler do
5
+ create_file 'config/initializers/sass.rb' do <<-RUBY
6
+ Rails.application.config.generators.stylesheet_engine = :sass
7
+ RUBY
8
+ end
9
+ end
10
+ end
11
+
12
+ __END__
13
+
14
+ name: SASS
15
+ description: "Utilize SASS for really awesome stylesheets!"
16
+ author: mbleigh, mrc2407, & ashley_woodard
17
+
18
+ exclusive: css_replacement
19
+ category: assets
20
+ tags: [css]
21
+
22
+ config:
23
+ - sass:
24
+ type: boolean
25
+ prompt: Would you like to use SASS syntax instead of SCSS?
@@ -0,0 +1,76 @@
1
+ # Application template recipe for the rails_apps_composer. Check for a newer version here:
2
+ # https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/seed_database.rb
3
+
4
+
5
+ after_bundler do
6
+
7
+ say_wizard "SeedDatabase recipe running 'after bundler'"
8
+
9
+ run 'bundle exec rake db:migrate' unless recipes.include? 'mongoid'
10
+
11
+ if recipes.include? 'devise-invitable'
12
+ generate 'devise_invitable user'
13
+ unless recipes.include? 'mongoid'
14
+ run 'bundle exec rake db:migrate'
15
+ end
16
+ end
17
+
18
+ # clone the schema changes to the test database
19
+ run 'bundle exec rake db:test:prepare' unless recipes.include? 'mongoid'
20
+
21
+ if recipes.include? 'mongoid'
22
+ append_file 'db/seeds.rb' do <<-FILE
23
+ puts 'EMPTY THE MONGODB DATABASE'
24
+ Mongoid.master.collections.reject { |c| c.name =~ /^system/}.each(&:drop)
25
+ FILE
26
+ end
27
+ end
28
+
29
+ if recipes.include? 'devise'
30
+ if recipes.include? 'devise-confirmable'
31
+ append_file 'db/seeds.rb' do <<-FILE
32
+ puts 'SETTING UP DEFAULT USER LOGIN'
33
+ user = User.create! :name => 'First User', :email => 'user@example.com', :password => 'please', :password_confirmation => 'please', :confirmed_at => Time.now.utc
34
+ puts 'New user created: ' << user.name
35
+ user2 = User.create! :name => 'Second User', :email => 'user2@example.com', :password => 'please', :password_confirmation => 'please', :confirmed_at => Time.now.utc
36
+ puts 'New user created: ' << user2.name
37
+ FILE
38
+ end
39
+ else
40
+ append_file 'db/seeds.rb' do <<-FILE
41
+ puts 'SETTING UP DEFAULT USER LOGIN'
42
+ user = User.create! :name => 'First User', :email => 'user@example.com', :password => 'please', :password_confirmation => 'please'
43
+ puts 'New user created: ' << user.name
44
+ user2 = User.create! :name => 'Second User', :email => 'user2@example.com', :password => 'please', :password_confirmation => 'please'
45
+ puts 'New user created: ' << user2.name
46
+ FILE
47
+ end
48
+ end
49
+ if recipes.include? 'authorization'
50
+ append_file 'db/seeds.rb' do <<-FILE
51
+ user.add_role :admin
52
+ FILE
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+
59
+ end
60
+
61
+ after_everything do
62
+
63
+ say_wizard "seeding the database"
64
+ run 'bundle exec rake db:seed'
65
+ run 'rake db:mongoid:create_indexes' if recipes.include? 'mongoid'
66
+
67
+ end
68
+
69
+ __END__
70
+
71
+ name: SeedDatabase
72
+ description: "Create a database seed file with a default user."
73
+ author: RailsApps
74
+
75
+ category: other
76
+ tags: [utilities, configuration]
@@ -0,0 +1,43 @@
1
+ gem 'settingslogic'
2
+
3
+ say_wizard "Generating config/application.yml..."
4
+
5
+ append_file "config/application.rb", <<-RUBY
6
+
7
+ require 'settings'
8
+ RUBY
9
+
10
+ create_file "lib/settings.rb", <<-RUBY
11
+ class Settings < Settingslogic
12
+ source "#\{Rails.root\}/config/application.yml"
13
+ namespace Rails.env
14
+ end
15
+
16
+ RUBY
17
+
18
+ create_file "config/application.yml", <<-YAML
19
+ defaults: &defaults
20
+ cool:
21
+ saweet: nested settings
22
+ neat_setting: 24
23
+ awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %>
24
+
25
+ development:
26
+ <<: *defaults
27
+ neat_setting: 800
28
+
29
+ test:
30
+ <<: *defaults
31
+
32
+ production:
33
+ <<: *defaults
34
+ YAML
35
+
36
+ __END__
37
+
38
+ name: Settingslogic
39
+ description: "A simple and straightforward settings solution that uses an ERB enabled YAML file and a singleton design pattern."
40
+ author: elandesign
41
+
42
+ category: other
43
+ tags: [utilities, configuration]
@@ -0,0 +1,54 @@
1
+ # Application template recipe for the rails_apps_composer. Check for a newer version here:
2
+ # https://github.com/gmgp/rails_apps_composer/blob/master/recipes/simple_form.rb
3
+
4
+ case config['form_option']
5
+ when 'no'
6
+ say_wizard "Form help recipe skipped."
7
+ when 'simple_form'
8
+ gem 'simple_form'
9
+ # for external test
10
+ recipes << 'simple_form'
11
+ when 'simple_form_bootstrap'
12
+ gem 'simple_form'
13
+ # for external test
14
+ recipes << 'simple_form'
15
+ recipes << 'simple_form_bootstrap'
16
+ else
17
+ say_wizard "Form help recipe skipped."
18
+ end
19
+
20
+
21
+
22
+ after_bundler do
23
+
24
+ say_wizard "Simple form recipe running 'after bundler'"
25
+
26
+ case config['form_option']
27
+ when 'simple_form'
28
+ generate 'simple_form:install'
29
+ when 'simple_form_bootstrap'
30
+ if recipes.include? 'bootstrap'
31
+ generate 'simple_form:install --bootstrap'
32
+ else
33
+ say_wizard "Bootstrap not found."
34
+ end
35
+ end
36
+ end
37
+
38
+
39
+ __END__
40
+
41
+ name: SimpleForm
42
+ description: "Check for 'simple_form'."
43
+ author: Gmgp
44
+
45
+ category: other
46
+ tags: [utilities, configuration]
47
+
48
+ run_after: [html5]
49
+
50
+ config:
51
+ - form_option:
52
+ type: multiple_choice
53
+ prompt: "Which form gem would you like?"
54
+ choices: [["None", no], ["simple form", simple_form], ["simple form (bootstrap)", simple_form_bootstrap]]
data/recipes/slim.rb ADDED
@@ -0,0 +1,46 @@
1
+ # Application template recipe for the rails_apps_composer. Check for a newer version here:
2
+ # https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/slim.rb
3
+
4
+ if config['slim']
5
+ gem 'slim', '~> 1.0'
6
+ gem 'slim-rails', '~> 1.0.3', :group => :development
7
+ else
8
+ recipes.delete('slim')
9
+ end
10
+
11
+ after_bundler do
12
+
13
+ say_wizard "Slim recipe running 'after bundler'"
14
+
15
+ remove_file 'app/views/layouts/application.html.erb'
16
+ # There is Slim code in this script. Changing the indentation is perilous between SLIMs.
17
+ # We have to use single-quote-style-heredoc to avoid interpolation.
18
+ create_file 'app/views/layouts/application.html.slim' do
19
+ <<-'SLIM'
20
+ doctype html
21
+ html
22
+ head
23
+ title App_Name
24
+ = stylesheet_link_tag "application", :media => "all"
25
+ = javascript_include_tag "application"
26
+ = csrf_meta_tags
27
+ body
28
+ = yield
29
+ SLIM
30
+ end
31
+
32
+ end
33
+
34
+ __END__
35
+
36
+ name: SLIM
37
+ description: "Utilize Slim instead of ERB."
38
+ author: claudiob
39
+
40
+ category: templating
41
+ exclusive: templating
42
+
43
+ config:
44
+ - slim:
45
+ type: boolean
46
+ prompt: Would you like to use Slim instead of ERB?
@@ -0,0 +1,43 @@
1
+
2
+ after_bundler do
3
+
4
+ say_wizard "HomePage recipe running 'after bundler'"
5
+
6
+ # remove the default home page
7
+ remove_file 'public/index.html'
8
+
9
+ # create a home controller and view
10
+ generate(:controller, "static home")
11
+
12
+ # set up a simple home page (with placeholder content)
13
+ if recipes.include? 'haml'
14
+ remove_file 'app/views/static/home.html.haml'
15
+ # There is Haml code in this script. Changing the indentation is perilous between HAMLs.
16
+ # We have to use single-quote-style-heredoc to avoid interpolation.
17
+ create_file 'app/views/static/home.html.haml' do
18
+ <<-'HAML'
19
+ %h3 Home
20
+ HAML
21
+ end
22
+ else
23
+ remove_file 'app/views/static/home.html.erb'
24
+ create_file 'app/views/static/home.html.erb' do
25
+ <<-ERB
26
+ <h3>Home</h3>
27
+ ERB
28
+ end
29
+ end
30
+
31
+ # set routes
32
+ gsub_file 'config/routes.rb', /get \"static\/home\"/, 'root to: "static#home"'
33
+
34
+ end
35
+
36
+ __END__
37
+
38
+ name: StaticPage
39
+ description: "Create a simple home page (creates a static controller and view)."
40
+ author: RailsApps
41
+
42
+ category: other
43
+ tags: [utilities, configuration]