tennpipes-init 3.6.6
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/LICENSE.txt +20 -0
- data/README.rdoc +163 -0
- data/Rakefile +1 -0
- data/bin/tennpipes-init +16 -0
- data/lib/tennpipes-init.rb +73 -0
- data/lib/tennpipes-init/command.rb +18 -0
- data/lib/tennpipes-init/generators/actions.rb +630 -0
- data/lib/tennpipes-init/generators/app.rb +75 -0
- data/lib/tennpipes-init/generators/app/app.rb.tt +72 -0
- data/lib/tennpipes-init/generators/app/app.rb.tt~ +72 -0
- data/lib/tennpipes-init/generators/cli.rb +57 -0
- data/lib/tennpipes-init/generators/component.rb +73 -0
- data/lib/tennpipes-init/generators/components/actions.rb +208 -0
- data/lib/tennpipes-init/generators/components/mocks/mocha.rb +10 -0
- data/lib/tennpipes-init/generators/components/mocks/rr.rb +13 -0
- data/lib/tennpipes-init/generators/components/orms/activerecord.rb +201 -0
- data/lib/tennpipes-init/generators/components/orms/couchrest.rb +55 -0
- data/lib/tennpipes-init/generators/components/orms/datamapper.rb +140 -0
- data/lib/tennpipes-init/generators/components/orms/dynamoid.rb +67 -0
- data/lib/tennpipes-init/generators/components/orms/minirecord.rb +165 -0
- data/lib/tennpipes-init/generators/components/orms/mongoid.rb +113 -0
- data/lib/tennpipes-init/generators/components/orms/mongomapper.rb +43 -0
- data/lib/tennpipes-init/generators/components/orms/mongomatic.rb +84 -0
- data/lib/tennpipes-init/generators/components/orms/ohm.rb +65 -0
- data/lib/tennpipes-init/generators/components/orms/ripple.rb +75 -0
- data/lib/tennpipes-init/generators/components/orms/sequel.rb +99 -0
- data/lib/tennpipes-init/generators/components/renderers/erb.rb +3 -0
- data/lib/tennpipes-init/generators/components/renderers/haml.rb +3 -0
- data/lib/tennpipes-init/generators/components/renderers/liquid.rb +4 -0
- data/lib/tennpipes-init/generators/components/renderers/slim.rb +3 -0
- data/lib/tennpipes-init/generators/components/scripts/dojo.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/extcore.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/jquery.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/mootools.rb +10 -0
- data/lib/tennpipes-init/generators/components/scripts/prototype.rb +12 -0
- data/lib/tennpipes-init/generators/components/scripts/rightjs.rb +10 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass.rb +39 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass/application.scss +43 -0
- data/lib/tennpipes-init/generators/components/stylesheets/compass/partials/_base.scss +12 -0
- data/lib/tennpipes-init/generators/components/stylesheets/less.rb +25 -0
- data/lib/tennpipes-init/generators/components/stylesheets/sass.rb +15 -0
- data/lib/tennpipes-init/generators/components/stylesheets/scss.rb +16 -0
- data/lib/tennpipes-init/generators/components/tests/bacon.rb +103 -0
- data/lib/tennpipes-init/generators/components/tests/cucumber.rb +86 -0
- data/lib/tennpipes-init/generators/components/tests/minitest.rb +110 -0
- data/lib/tennpipes-init/generators/components/tests/riot.rb +117 -0
- data/lib/tennpipes-init/generators/components/tests/rspec.rb +111 -0
- data/lib/tennpipes-init/generators/components/tests/shoulda.rb +114 -0
- data/lib/tennpipes-init/generators/components/tests/steak.rb +114 -0
- data/lib/tennpipes-init/generators/controller.rb +77 -0
- data/lib/tennpipes-init/generators/helper.rb +50 -0
- data/lib/tennpipes-init/generators/mailer.rb +52 -0
- data/lib/tennpipes-init/generators/migration.rb +43 -0
- data/lib/tennpipes-init/generators/model.rb +113 -0
- data/lib/tennpipes-init/generators/plugin.rb +67 -0
- data/lib/tennpipes-init/generators/project.rb +160 -0
- data/lib/tennpipes-init/generators/project/config.ru +9 -0
- data/lib/tennpipes-init/generators/project/config/apps.rb.tt +35 -0
- data/lib/tennpipes-init/generators/project/config/boot.rb +49 -0
- data/lib/tennpipes-init/generators/project/public/favicon.ico +0 -0
- data/lib/tennpipes-init/generators/project/public/images/booking.com.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/causes.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bg.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.svg +68 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.svg +65 -0
- data/lib/tennpipes-init/generators/project/public/images/forever21.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.eot +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.svg +970 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.ttf +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.woff +0 -0
- data/lib/tennpipes-init/generators/project/public/images/icons/tennpipes-icons.css +598 -0
- data/lib/tennpipes-init/generators/project/public/images/image1.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image11.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image2.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/image3.jpg +0 -0
- data/lib/tennpipes-init/generators/project/public/images/intuit.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/krispykreme.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/README.md +302 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/bower.json +4 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/composer.json +34 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/gulpfile.js +92 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.js +1920 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.min.js +12 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/package.json +46 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/holder.js +1411 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/augment.js +27 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/ondomready.js +155 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/polyfills.js +177 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/scenegraph.js +101 -0
- data/lib/tennpipes-init/generators/project/public/images/placeholders/src/utils.js +129 -0
- data/lib/tennpipes-init/generators/project/public/images/priceline.com.png +0 -0
- data/lib/tennpipes-init/generators/project/public/images/stripe.png +0 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes.min.js +6081 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.abide.js +340 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.accordion.js +67 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.alert.js +43 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.clearing.js +556 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.dropdown.js +448 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.equalizer.js +77 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.interchange.js +354 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.joyride.js +932 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.js +703 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.magellan.js +203 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.offcanvas.js +152 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.orbit.js +476 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.reveal.js +471 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.slider.js +263 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tab.js +237 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tooltip.js +307 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.topbar.js +452 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/fastclick.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.cookie.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.js +26 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/modernizr.js +8 -0
- data/lib/tennpipes-init/generators/project/public/javascripts/vendor/placeholder.js +2 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/app.css~ +178 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/app1.css~ +177 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css +214 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css~ +214 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/normalize.css +427 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css +6201 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css~ +6201 -0
- data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.min.css +1 -0
- data/lib/tennpipes-init/generators/runner.rb +139 -0
- data/lib/tennpipes-init/generators/task.rb +45 -0
- data/lib/tennpipes-init/generators/templates/Gemfile.tt +32 -0
- data/lib/tennpipes-init/generators/templates/Rakefile.tt +8 -0
- data/lib/tennpipes-init/generators/templates/controller.rb.tt +22 -0
- data/lib/tennpipes-init/generators/templates/gem/README.md.tt +29 -0
- data/lib/tennpipes-init/generators/templates/gem/gemspec.tt +19 -0
- data/lib/tennpipes-init/generators/templates/gem/lib/libname.tt +6 -0
- data/lib/tennpipes-init/generators/templates/gem/lib/libname/version.tt +3 -0
- data/lib/tennpipes-init/generators/templates/helper.rb.tt +13 -0
- data/lib/tennpipes-init/generators/templates/initializer.rb.tt +5 -0
- data/lib/tennpipes-init/generators/templates/mailer.rb.tt +54 -0
- data/lib/tennpipes-init/generators/templates/project_bin.tt +14 -0
- data/lib/tennpipes-init/generators/templates/task.rb.tt +7 -0
- data/lib/tennpipes-init/tennpipes-tasks/activerecord.rb +377 -0
- data/lib/tennpipes-init/tennpipes-tasks/database.rb +12 -0
- data/lib/tennpipes-init/tennpipes-tasks/datamapper.rb +94 -0
- data/lib/tennpipes-init/tennpipes-tasks/minirecord.rb +19 -0
- data/lib/tennpipes-init/tennpipes-tasks/mongoid.rb +215 -0
- data/lib/tennpipes-init/tennpipes-tasks/mongomapper.rb +55 -0
- data/lib/tennpipes-init/tennpipes-tasks/sequel.rb +85 -0
- data/lib/tennpipes-init/tennpipes-tasks/sql-helpers.rb +72 -0
- data/test/fixtures/admin_template.rb +7 -0
- data/test/fixtures/example_template.rb +15 -0
- data/test/fixtures/git_template.rb +4 -0
- data/test/fixtures/plugin_template.rb +13 -0
- data/test/fixtures/rake_template.rb +9 -0
- data/test/helper.rb +103 -0
- data/test/test_app_generator.rb +142 -0
- data/test/test_cli.rb +27 -0
- data/test/test_component_generator.rb +98 -0
- data/test/test_controller_generator.rb +272 -0
- data/test/test_generator.rb +13 -0
- data/test/test_helper_generator.rb +133 -0
- data/test/test_mailer_generator.rb +69 -0
- data/test/test_migration_generator.rb +222 -0
- data/test/test_model_generator.rb +553 -0
- data/test/test_plugin_generator.rb +152 -0
- data/test/test_project_generator.rb +757 -0
- data/test/test_task_generator.rb +53 -0
- metadata +285 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'tennpipes-base/cli/base' unless defined?(Tennpipes::Cli::Base)
|
|
2
|
+
require 'net/https'
|
|
3
|
+
|
|
4
|
+
module Tennpipes
|
|
5
|
+
module Generators
|
|
6
|
+
##
|
|
7
|
+
# Responsible for executing plugins instructions within a Tennpipes project.
|
|
8
|
+
#
|
|
9
|
+
class Plugin < Thor::Group
|
|
10
|
+
# Defines the default URL for official tennpipes recipe plugins.
|
|
11
|
+
PLUGIN_URL = 'https://github.com/tennpipes/tennpipes-recipes/tree/master/plugins'
|
|
12
|
+
Tennpipes::Generators.add_generator(:plugin, self)
|
|
13
|
+
|
|
14
|
+
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
|
15
|
+
def self.banner; "tennpipes-init plugin [plugin_identifier] [options]"; end
|
|
16
|
+
|
|
17
|
+
include Thor::Actions
|
|
18
|
+
include Tennpipes::Generators::Actions
|
|
19
|
+
include Tennpipes::Generators::Runner
|
|
20
|
+
|
|
21
|
+
desc "Description:\n\n\ttennpipes-init plugin sets up a plugin within a Tennpipes application"
|
|
22
|
+
|
|
23
|
+
argument :plugin_file, :desc => "The name or path to the Tennpipes plugin", :optional => true
|
|
24
|
+
|
|
25
|
+
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
|
26
|
+
class_option :list, :desc => "list available plugins", :aliases => '-l', :default => false, :type => :boolean
|
|
27
|
+
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
|
28
|
+
|
|
29
|
+
# Show help if no ARGV given.
|
|
30
|
+
require_arguments!
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Create the Tennpipes Plugin.
|
|
34
|
+
#
|
|
35
|
+
def setup_plugin
|
|
36
|
+
if options[:list] || plugin_file.nil?
|
|
37
|
+
list_plugins
|
|
38
|
+
else # executing the plugin instructions
|
|
39
|
+
self.destination_root = options[:root]
|
|
40
|
+
if in_app_root?
|
|
41
|
+
self.behavior = :revoke if options[:destroy]
|
|
42
|
+
execute_runner(:plugin, plugin_file)
|
|
43
|
+
else
|
|
44
|
+
say "You are not at the root of a Tennpipes application! (config/boot.rb not found)"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
no_tasks do
|
|
50
|
+
def list_plugins
|
|
51
|
+
plugins = {}
|
|
52
|
+
uri = URI.parse(PLUGIN_URL)
|
|
53
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
54
|
+
http.use_ssl = true if uri.scheme == "https"
|
|
55
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
56
|
+
http.start do
|
|
57
|
+
http.request_get(uri.path) do |res|
|
|
58
|
+
plugins = res.body.scan(%r{/plugins/(\w+)_plugin.rb}).uniq
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
say "Available plugins:", :green
|
|
62
|
+
say plugins.map { |plugin| " - #{plugin}" }.join("\n")
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
require 'tennpipes-base/version'
|
|
2
|
+
require 'securerandom' unless defined?(SecureRandom)
|
|
3
|
+
|
|
4
|
+
module Tennpipes
|
|
5
|
+
module Generators
|
|
6
|
+
##
|
|
7
|
+
# Responsible for generating new Tennpipes projects based on the specified project components.
|
|
8
|
+
#
|
|
9
|
+
class Project < Thor::Group
|
|
10
|
+
Tennpipes::Generators.add_generator(:project, self)
|
|
11
|
+
|
|
12
|
+
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
|
13
|
+
def self.banner; "tennpipes-init project [name] [options]"; end
|
|
14
|
+
|
|
15
|
+
include Thor::Actions
|
|
16
|
+
include Tennpipes::Generators::Actions
|
|
17
|
+
include Tennpipes::Generators::Runner
|
|
18
|
+
include Tennpipes::Generators::Components::Actions
|
|
19
|
+
|
|
20
|
+
desc "Description:\n\n\ttennpipes-init project generates a new Tennpipes project"
|
|
21
|
+
|
|
22
|
+
argument :name, :desc => 'The name of your tennpipes project'
|
|
23
|
+
|
|
24
|
+
class_option :app , :desc => 'The application name', :aliases => '-n', :default => nil, :type => :string
|
|
25
|
+
class_option :bundle, :desc => 'Run bundle install', :aliases => '-b', :default => false, :type => :boolean
|
|
26
|
+
class_option :root, :desc => 'The root destination', :aliases => '-r', :default => '.', :type => :string
|
|
27
|
+
class_option :dev, :desc => 'Use tennpipes from a git checkout', :default => false, :type => :boolean
|
|
28
|
+
class_option :tiny, :desc => 'Generate tiny app skeleton', :aliases => '-i', :default => false, :type => :boolean
|
|
29
|
+
class_option :lean, :desc => 'Generate lean project without apps', :aliases => '-l', :default => false, :type => :boolean
|
|
30
|
+
class_option :adapter, :desc => 'SQL adapter for ORM (sqlite, mysql, mysql2, mysql-gem, postgres)', :aliases => '-a', :default => 'sqlite', :type => :string
|
|
31
|
+
class_option :template, :desc => 'Generate project from template', :aliases => '-p', :default => nil, :type => :string
|
|
32
|
+
class_option :gem, :desc => 'Generate project as a gem', :aliases => '-g', :default => false, :type => :boolean
|
|
33
|
+
class_option :migration_format, :desc => 'Filename format for migrations (number, timestamp)', :default => 'number', :type => :string
|
|
34
|
+
|
|
35
|
+
# Definitions for the available customizable components.
|
|
36
|
+
defines_component_options
|
|
37
|
+
|
|
38
|
+
# Show help if no ARGV given.
|
|
39
|
+
require_arguments!
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Copies over the Tennpipes base application app.
|
|
43
|
+
#
|
|
44
|
+
def setup_project
|
|
45
|
+
valid_constant? name
|
|
46
|
+
app = (options[:app] || "App")
|
|
47
|
+
|
|
48
|
+
@project_name = name.gsub(/\W/, '_').underscore.camelize
|
|
49
|
+
@app_name = app.gsub(/\W/, '_').camelize
|
|
50
|
+
self.destination_root = File.join(options[:root], name)
|
|
51
|
+
if options[:template]
|
|
52
|
+
execute_runner(:template, options[:template])
|
|
53
|
+
else
|
|
54
|
+
directory('project/', destination_root)
|
|
55
|
+
empty_directory destination_root('public/images')
|
|
56
|
+
empty_directory destination_root('public/javascripts')
|
|
57
|
+
empty_directory destination_root('public/stylesheets')
|
|
58
|
+
store_component_config('.components')
|
|
59
|
+
unless options[:lean]
|
|
60
|
+
app_skeleton('app', options[:tiny])
|
|
61
|
+
append_file destination_root('config/apps.rb'), "Tennpipes.mount('#{@project_name}::#{@app_name}', :app_file => Tennpipes.root('app/app.rb')).to('/')\n"
|
|
62
|
+
end
|
|
63
|
+
template 'templates/Gemfile.tt', destination_root('Gemfile')
|
|
64
|
+
template 'templates/Rakefile.tt', destination_root('Rakefile')
|
|
65
|
+
template 'templates/project_bin.tt', destination_root("bin/#{name}")
|
|
66
|
+
File.chmod(0755, destination_root("bin/#{name}"))
|
|
67
|
+
if options.gem?
|
|
68
|
+
template 'templates/gem/gemspec.tt', destination_root(name + '.gemspec')
|
|
69
|
+
template 'templates/gem/README.md.tt', destination_root('README.md')
|
|
70
|
+
template 'templates/gem/lib/libname.tt', destination_root("lib/#{name}.rb")
|
|
71
|
+
template 'templates/gem/lib/libname/version.tt', destination_root("lib/#{name}/version.rb")
|
|
72
|
+
else
|
|
73
|
+
empty_directory_with_keep_file destination_root('tmp')
|
|
74
|
+
empty_directory_with_keep_file destination_root('log')
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
##
|
|
80
|
+
# For each component, retrieve a valid choice and then execute the associated generator.
|
|
81
|
+
#
|
|
82
|
+
def setup_components
|
|
83
|
+
return if options[:template]
|
|
84
|
+
@_components = options.dup.slice(*self.class.component_types)
|
|
85
|
+
self.class.component_types.each do |comp|
|
|
86
|
+
choice = @_components[comp] = resolve_valid_choice(comp)
|
|
87
|
+
execute_component_setup(comp, choice)
|
|
88
|
+
end
|
|
89
|
+
store_component_config('.components')
|
|
90
|
+
store_component_choice(:namespace, @project_name)
|
|
91
|
+
store_component_choice(:migration_format, options[:migration_format])
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
##
|
|
95
|
+
# Generates test files for tiny app skeleton.
|
|
96
|
+
#
|
|
97
|
+
def setup_test_files
|
|
98
|
+
if options[:tiny] && @_components[:test] != :none
|
|
99
|
+
test_component = @_components[:test]
|
|
100
|
+
test_component = "rspec" if test_component == "cucumber"
|
|
101
|
+
uppercase_test_component = test_component.upcase
|
|
102
|
+
controller_template_name = "#{uppercase_test_component}_CONTROLLER_TEST"
|
|
103
|
+
helper_template_name = "#{uppercase_test_component}_HELPER_TEST"
|
|
104
|
+
return unless defined?(controller_template_name)
|
|
105
|
+
|
|
106
|
+
controller_content = instance_eval(controller_template_name).gsub(/!PATH!/, "Controller").gsub(/!NAME!/, "").gsub(/!EXPANDED_PATH!/, "/")
|
|
107
|
+
helper_content = instance_eval(helper_template_name).gsub(/!NAME!/, "#{@project_name}::#{@app_name}::#{DEFAULT_HELPER_NAME}")
|
|
108
|
+
|
|
109
|
+
proc{|*args| args.map{|str| str.gsub!(/!PATH!/, recognize_path)} }.call(controller_content, helper_content)
|
|
110
|
+
|
|
111
|
+
directory_name = [:rspec, :steak].include?(test_component.to_sym) ? "spec" : "test"
|
|
112
|
+
base_path = File.join(directory_name, "app")
|
|
113
|
+
create_file destination_root("#{base_path}/controllers/controllers_#{directory_name}.rb"), controller_content, :skip => true
|
|
114
|
+
create_file destination_root("#{base_path}/helpers/helpers_#{directory_name}.rb"), helper_content, :skip => true
|
|
115
|
+
helper_path = destination_root(File.join(directory_name, "#{directory_name == "spec" ? "spec_helper" : "test_config"}.rb"))
|
|
116
|
+
gsub_file helper_path, %r{helpers/\*\*/\*\.rb}, "helpers.rb"
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
##
|
|
121
|
+
# Bundle all required components using bundler and Gemfile.
|
|
122
|
+
#
|
|
123
|
+
def bundle_dependencies
|
|
124
|
+
if options[:bundle]
|
|
125
|
+
run_bundler
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Finish message.
|
|
131
|
+
#
|
|
132
|
+
def finish_message
|
|
133
|
+
say
|
|
134
|
+
say '=' * 65, :green
|
|
135
|
+
say "#{name} is ready for development!", :green
|
|
136
|
+
say '=' * 65, :green
|
|
137
|
+
say "$ cd #{options[:root]}/#{name}"
|
|
138
|
+
say "$ bundle" unless options[:bundle]
|
|
139
|
+
say "=" * 65, :green
|
|
140
|
+
say
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
##
|
|
144
|
+
# Returns the git author name config or a fill-in value.
|
|
145
|
+
#
|
|
146
|
+
def git_author_name
|
|
147
|
+
git_author_name = `git config user.name`.chomp rescue ''
|
|
148
|
+
git_author_name.empty? ? "TODO: Write your name" : git_author_name
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
##
|
|
152
|
+
# Returns the git author email config or a fill-in value.
|
|
153
|
+
#
|
|
154
|
+
def git_author_email
|
|
155
|
+
git_author_email = `git config user.email`.chomp rescue ''
|
|
156
|
+
git_author_email.empty? ? "TODO: Write your email address" : git_author_email
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
##
|
|
2
|
+
# This file mounts each app in the Tennpipes project to a specified sub-uri.
|
|
3
|
+
# You can mount additional applications using any of these commands below:
|
|
4
|
+
#
|
|
5
|
+
# Tennpipes.mount('blog').to('/blog')
|
|
6
|
+
# Tennpipes.mount('blog', :app_class => 'BlogApp').to('/blog')
|
|
7
|
+
# Tennpipes.mount('blog', :app_file => 'path/to/blog/app.rb').to('/blog')
|
|
8
|
+
#
|
|
9
|
+
# You can also map apps to a specified host:
|
|
10
|
+
#
|
|
11
|
+
# Tennpipes.mount('Admin').host('admin.example.org')
|
|
12
|
+
# Tennpipes.mount('WebSite').host(/.*\.?example.org/)
|
|
13
|
+
# Tennpipes.mount('Foo').to('/foo').host('bar.example.org')
|
|
14
|
+
#
|
|
15
|
+
# Note 1: Mounted apps (by default) should be placed into the project root at '/app_name'.
|
|
16
|
+
# Note 2: If you use the host matching remember to respect the order of the rules.
|
|
17
|
+
#
|
|
18
|
+
# By default, this file mounts the primary app which was generated with this project.
|
|
19
|
+
# However, the mounted app can be modified as needed:
|
|
20
|
+
#
|
|
21
|
+
# Tennpipes.mount('AppName', :app_file => 'path/to/file', :app_class => 'BlogApp').to('/')
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# Setup global project settings for your apps. These settings are inherited by every subapp. You can
|
|
26
|
+
# override these settings in the subapps as needed.
|
|
27
|
+
#
|
|
28
|
+
Tennpipes.configure_apps do
|
|
29
|
+
# enable :sessions
|
|
30
|
+
set :session_secret, '<%= SecureRandom.hex(32) %>'
|
|
31
|
+
set :protection, :except => :path_traversal
|
|
32
|
+
set :protect_from_csrf, true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Mounts the core application for this project
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Defines our constants
|
|
2
|
+
RACK_ENV = ENV['RACK_ENV'] ||= 'development' unless defined?(RACK_ENV)
|
|
3
|
+
TENNPIPES_ROOT = File.expand_path('../..', __FILE__) unless defined?(TENNPIPES_ROOT)
|
|
4
|
+
|
|
5
|
+
# Load our dependencies
|
|
6
|
+
require 'bundler/setup'
|
|
7
|
+
Bundler.require(:default, RACK_ENV)
|
|
8
|
+
|
|
9
|
+
##
|
|
10
|
+
# ## Enable devel logging
|
|
11
|
+
#
|
|
12
|
+
# Tennpipes::Logger::Config[:development][:log_level] = :devel
|
|
13
|
+
# Tennpipes::Logger::Config[:development][:log_static] = true
|
|
14
|
+
#
|
|
15
|
+
# ## Enable logging of source location
|
|
16
|
+
#
|
|
17
|
+
# Tennpipes::Logger::Config[:development][:source_location] = true
|
|
18
|
+
#
|
|
19
|
+
# ## Configure your I18n
|
|
20
|
+
#
|
|
21
|
+
# I18n.default_locale = :en
|
|
22
|
+
# I18n.enforce_available_locales = false
|
|
23
|
+
#
|
|
24
|
+
# ## Configure your HTML5 data helpers
|
|
25
|
+
#
|
|
26
|
+
# Tennpipes::Helpers::TagHelpers::DATA_ATTRIBUTES.push(:dialog)
|
|
27
|
+
# text_field :foo, :dialog => true
|
|
28
|
+
# Generates: <input type="text" data-dialog="true" name="foo" />
|
|
29
|
+
#
|
|
30
|
+
# ## Add helpers to mailer
|
|
31
|
+
#
|
|
32
|
+
# Mail::Message.class_eval do
|
|
33
|
+
# include Tennpipes::Helpers::NumberHelpers
|
|
34
|
+
# include Tennpipes::Helpers::TranslationHelpers
|
|
35
|
+
# end
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
# Add your before (RE)load hooks here
|
|
39
|
+
#
|
|
40
|
+
Tennpipes.before_load do
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
##
|
|
44
|
+
# Add your after (RE)load hooks here
|
|
45
|
+
#
|
|
46
|
+
Tennpipes.after_load do
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Tennpipes.load!
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
|
+
id="svg2"
|
|
14
|
+
version="1.1"
|
|
15
|
+
inkscape:version="0.48.5 r10040"
|
|
16
|
+
width="30"
|
|
17
|
+
height="30"
|
|
18
|
+
sodipodi:docname="ennkeypee_bluelogo.png"
|
|
19
|
+
inkscape:export-filename="ennkeypee.svg.png"
|
|
20
|
+
inkscape:export-xdpi="90"
|
|
21
|
+
inkscape:export-ydpi="90">
|
|
22
|
+
<metadata
|
|
23
|
+
id="metadata8">
|
|
24
|
+
<rdf:RDF>
|
|
25
|
+
<cc:Work
|
|
26
|
+
rdf:about="">
|
|
27
|
+
<dc:format>image/svg+xml</dc:format>
|
|
28
|
+
<dc:type
|
|
29
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
30
|
+
<dc:title></dc:title>
|
|
31
|
+
</cc:Work>
|
|
32
|
+
</rdf:RDF>
|
|
33
|
+
</metadata>
|
|
34
|
+
<defs
|
|
35
|
+
id="defs6" />
|
|
36
|
+
<sodipodi:namedview
|
|
37
|
+
pagecolor="#ffffff"
|
|
38
|
+
bordercolor="#666666"
|
|
39
|
+
borderopacity="1"
|
|
40
|
+
objecttolerance="10"
|
|
41
|
+
gridtolerance="10"
|
|
42
|
+
guidetolerance="10"
|
|
43
|
+
inkscape:pageopacity="0"
|
|
44
|
+
inkscape:pageshadow="2"
|
|
45
|
+
inkscape:window-width="640"
|
|
46
|
+
inkscape:window-height="480"
|
|
47
|
+
id="namedview4"
|
|
48
|
+
showgrid="false"
|
|
49
|
+
inkscape:zoom="9.6182292"
|
|
50
|
+
inkscape:cx="15"
|
|
51
|
+
inkscape:cy="15"
|
|
52
|
+
inkscape:window-x="65"
|
|
53
|
+
inkscape:window-y="24"
|
|
54
|
+
inkscape:window-maximized="0"
|
|
55
|
+
inkscape:current-layer="svg2" />
|
|
56
|
+
<image
|
|
57
|
+
width="30"
|
|
58
|
+
height="30"
|
|
59
|
+
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAAAK9JREFU
|
|
60
|
+
SInt1jEKwlAMgOE/rwUXJ+so6CkEb+DmAQQXi3gaD+DgRdyER3F0cHR38Aia56oUOjxKWzQZE8gX
|
|
61
|
+
AoEIeaG0ECkAgjQNu6bB1uG0lNGwxKWXWpUQBoiequFEbuyn11rh1Tmj953q0Ko/I/cLCNuozpoc
|
|
62
|
+
Ocx2cbDIBNw8ChbuVeX/OyeDDTbYYIMN7h5cfgSeMmLjHwC8GEaPJqHP2o8BUM1KZfJC7aH/afgN
|
|
63
|
+
tZsfXt3Sf4QAAAAASUVORK5CYII=
|
|
64
|
+
"
|
|
65
|
+
id="image10"
|
|
66
|
+
x="0"
|
|
67
|
+
y="0" />
|
|
68
|
+
</svg>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
+
|
|
4
|
+
<svg
|
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
13
|
+
id="svg2"
|
|
14
|
+
version="1.1"
|
|
15
|
+
inkscape:version="0.48.5 r10040"
|
|
16
|
+
width="30"
|
|
17
|
+
height="30"
|
|
18
|
+
sodipodi:docname="ennkeypee_whitelogo.png">
|
|
19
|
+
<metadata
|
|
20
|
+
id="metadata8">
|
|
21
|
+
<rdf:RDF>
|
|
22
|
+
<cc:Work
|
|
23
|
+
rdf:about="">
|
|
24
|
+
<dc:format>image/svg+xml</dc:format>
|
|
25
|
+
<dc:type
|
|
26
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
27
|
+
<dc:title></dc:title>
|
|
28
|
+
</cc:Work>
|
|
29
|
+
</rdf:RDF>
|
|
30
|
+
</metadata>
|
|
31
|
+
<defs
|
|
32
|
+
id="defs6" />
|
|
33
|
+
<sodipodi:namedview
|
|
34
|
+
pagecolor="#ffffff"
|
|
35
|
+
bordercolor="#666666"
|
|
36
|
+
borderopacity="1"
|
|
37
|
+
objecttolerance="10"
|
|
38
|
+
gridtolerance="10"
|
|
39
|
+
guidetolerance="10"
|
|
40
|
+
inkscape:pageopacity="0"
|
|
41
|
+
inkscape:pageshadow="2"
|
|
42
|
+
inkscape:window-width="640"
|
|
43
|
+
inkscape:window-height="480"
|
|
44
|
+
id="namedview4"
|
|
45
|
+
showgrid="false"
|
|
46
|
+
inkscape:zoom="9.6182292"
|
|
47
|
+
inkscape:cx="15"
|
|
48
|
+
inkscape:cy="15"
|
|
49
|
+
inkscape:window-x="65"
|
|
50
|
+
inkscape:window-y="24"
|
|
51
|
+
inkscape:window-maximized="0"
|
|
52
|
+
inkscape:current-layer="svg2" />
|
|
53
|
+
<image
|
|
54
|
+
width="30"
|
|
55
|
+
height="30"
|
|
56
|
+
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAAAJ9JREFU
|
|
57
|
+
SInt1zEKwkAQBdD/h5Sp1FKIx0mXA3gBT5ML2XkDC0v7FJ5hfprFwgSFJSTBzDS7OwvzYGBhlpIc
|
|
58
|
+
C0SRVs4N29zg4nAxkjsDuE/s7ADcfsFPko8pVUn7z9yqWv0OSY27X3IKm9mVZJsFAziZWZ0DA+i+
|
|
59
|
+
XW7vOQUccMABBxzw+uCxQeAo6ZX2h9zC7l5KqtJxMHMx/SRioP9fuAc5siKo9t7jewAAAABJRU5E
|
|
60
|
+
rkJggg==
|
|
61
|
+
"
|
|
62
|
+
id="image10"
|
|
63
|
+
x="0"
|
|
64
|
+
y="0" />
|
|
65
|
+
</svg>
|