bootstrappers 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +23 -0
- data/README.md +62 -0
- data/Rakefile +2 -0
- data/bin/bootstrapers +11 -0
- data/bootstrapers.gemspec +22 -0
- data/lib/bootstrapers.rb +5 -0
- data/lib/bootstrappers/actions.rb +35 -0
- data/lib/bootstrappers/app_builder.rb +130 -0
- data/lib/bootstrappers/generators/app_generator.rb +146 -0
- data/lib/bootstrappers/version.rb +3 -0
- data/templates/Gemfile_additions +30 -0
- data/templates/README.md.erb +5 -0
- data/templates/bootstrappers_gitignore +7 -0
- data/templates/bootstrappers_layout.html.erb.erb +53 -0
- data/templates/common/_bootstrap_modal.html.erb +4 -0
- data/templates/common/_facebook_js.erb +9 -0
- data/templates/common/_footer.html.erb +10 -0
- data/templates/common/_google_analytics.html.erb +13 -0
- data/templates/common/_menu.html.erb +32 -0
- data/templates/common/_search_form.html.erb +5 -0
- data/templates/common/_user_nav.html.erb +21 -0
- data/templates/config_yml.erb +18 -0
- data/templates/import_scss_styles +3 -0
- data/templates/initializers/seo_helper.rb +11 -0
- data/templates/javascripts/README +0 -0
- data/templates/mysql_database.yml.erb +12 -0
- data/templates/setting.rb +5 -0
- data/templates/stylesheets/bootstrap-override.css.scss +11 -0
- data/templates/stylesheets/bootstrap-setting.css.scss +0 -0
- data/templates/welcome.html.erb +3 -0
- metadata +126 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Copyright (c) 2012 rocodev,inc
|
2
|
+
Copyright (c) 2010-2012 Mike Burns and thoughtbot, inc. ( from suspenders)
|
3
|
+
|
4
|
+
MIT License
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
7
|
+
a copy of this software and associated documentation files (the
|
8
|
+
"Software"), to deal in the Software without restriction, including
|
9
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
10
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
11
|
+
permit persons to whom the Software is furnished to do so, subject to
|
12
|
+
the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be
|
15
|
+
included in all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
20
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
21
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
22
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
23
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# Bootstrappers
|
2
|
+
|
3
|
+
Bootstrappers is the base Rails application used at [Rocodev](http://rocodev.com).
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
First install the bootstrappers gem:
|
8
|
+
|
9
|
+
gem install bootstrappers
|
10
|
+
|
11
|
+
Then run:
|
12
|
+
|
13
|
+
$ bootstrappers project_name
|
14
|
+
|
15
|
+
|
16
|
+
## Gemfile
|
17
|
+
|
18
|
+
To see the latest and greatest gems, look at Suspenders' template/Gemfile_additions, which will be appended to the default generated projectname/Gemfile.
|
19
|
+
|
20
|
+
|
21
|
+
It includes application gems like:
|
22
|
+
|
23
|
+
* [Bootstrap SCSS](https://github.com/anjlab/bootstrap-rails)
|
24
|
+
* [Bootstrap Helper](https://github.com/xdite/bootstrap-helper)
|
25
|
+
* [SimpleForm](https://github.com/plataformatec/simple_form)
|
26
|
+
* [WillPaginate](https://github.com/mislav/will_paginate/)
|
27
|
+
* [Compass](http://compass-style.org/)
|
28
|
+
* [SeoHelper](https://github.com/techbang/seo_helper)
|
29
|
+
* [Capistrano](https://github.com/capistrano/capistrano)
|
30
|
+
* [Cape](https://github.com/njonsson/cape)
|
31
|
+
* [Magic encoding](https://github.com/m-ryan/magic_encoding)
|
32
|
+
* [Settingslogic](https://github.com/binarylogic/settingslogic)
|
33
|
+
* [Airbrake](https://github.com/airbrake/airbrake)
|
34
|
+
* [NewRelic RPM](https://github.com/newrelic/rpm)
|
35
|
+
* [Turbo Sprockets for Rails 3.2.x](https://github.com/ndbroadbent/turbo-sprockets-rails3) Speeds up your Rails 3 rake assets:precompile by only recompiling changed assets
|
36
|
+
|
37
|
+
|
38
|
+
## Contributing
|
39
|
+
|
40
|
+
1. Fork it
|
41
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
+
5. Create new Pull Request
|
45
|
+
|
46
|
+
|
47
|
+
## Issues
|
48
|
+
|
49
|
+
|
50
|
+
If you have problems, please create a [Github issue](https://github.com/xdite/bootstrappers/issues).
|
51
|
+
|
52
|
+
## Credits
|
53
|
+
|
54
|
+
Bootstrappers is maintained and funded by [@xdite](http://github.com/xdite)
|
55
|
+
|
56
|
+
some codes of bootstrappers were borrowed from [suspenders](https://github.com/thoughtbot/suspenders)
|
57
|
+
|
58
|
+
|
59
|
+
License
|
60
|
+
-------
|
61
|
+
|
62
|
+
Suspenders is Copyright © 2012 rocodev. It is free software, and may be redistributed under the terms specified in the LICENSE file.
|
data/Rakefile
ADDED
data/bin/bootstrapers
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.expand_path(File.join('..', 'lib', 'bootstrappers', 'generators', 'app_generator'), File.dirname(__FILE__))
|
4
|
+
require File.expand_path(File.join('..', 'lib', 'bootstrappers', 'actions'), File.dirname(__FILE__))
|
5
|
+
require File.expand_path(File.join('..', 'lib', 'bootstrappers', 'app_builder'), File.dirname(__FILE__))
|
6
|
+
|
7
|
+
templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
|
8
|
+
|
9
|
+
Bootstrappers::AppGenerator.source_root templates_root
|
10
|
+
Bootstrappers::AppGenerator.source_paths << Rails::Generators::AppGenerator.source_root << templates_root
|
11
|
+
Bootstrappers::AppGenerator.start
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bootstrappers/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "bootstrappers"
|
8
|
+
gem.version = Bootstrappers::VERSION
|
9
|
+
gem.authors = ["xdite"]
|
10
|
+
gem.email = ["xdite@rocodev.com"]
|
11
|
+
gem.description = %q{ Write a gem description}
|
12
|
+
gem.summary = %q{ Write a gem summary}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_dependency 'rails', '3.2.8'
|
21
|
+
gem.add_dependency 'bundler', '>= 1.1'
|
22
|
+
end
|
data/lib/bootstrapers.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Bootstrappers
|
2
|
+
module Actions
|
3
|
+
def concat_file(source, destination)
|
4
|
+
contents = IO.read(find_in_source_paths(source))
|
5
|
+
append_file destination, contents
|
6
|
+
end
|
7
|
+
|
8
|
+
def replace_in_file(relative_path, find, replace)
|
9
|
+
path = File.join(destination_root, relative_path)
|
10
|
+
contents = IO.read(path)
|
11
|
+
unless contents.gsub!(find, replace)
|
12
|
+
raise "#{find.inspect} not found in #{relative_path}"
|
13
|
+
end
|
14
|
+
File.open(path, "w") { |file| file.write(contents) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def action_mailer_host(rails_env, host)
|
18
|
+
inject_into_file(
|
19
|
+
"config/environments/#{rails_env}.rb",
|
20
|
+
"\n\n config.action_mailer.default_url_options = { :host => '#{host}' }",
|
21
|
+
:before => "\nend"
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
def download_file(uri_string, destination)
|
26
|
+
uri = URI.parse(uri_string)
|
27
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
28
|
+
http.use_ssl = true if uri_string =~ /^https/
|
29
|
+
request = Net::HTTP::Get.new(uri.path)
|
30
|
+
contents = http.request(request).body
|
31
|
+
path = File.join(destination_root, destination)
|
32
|
+
File.open(path, "w") { |file| file.write(contents) }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Bootstrappers
|
2
|
+
class AppBuilder < Rails::AppBuilder
|
3
|
+
|
4
|
+
include Bootstrappers::Actions
|
5
|
+
|
6
|
+
def readme
|
7
|
+
template 'README.md.erb', 'README.md'
|
8
|
+
end
|
9
|
+
|
10
|
+
def remove_public_index
|
11
|
+
remove_file 'public/index.html'
|
12
|
+
end
|
13
|
+
|
14
|
+
def remove_rails_logo_image
|
15
|
+
remove_file 'app/assets/images/rails.png'
|
16
|
+
end
|
17
|
+
|
18
|
+
def raise_delivery_errors
|
19
|
+
replace_in_file 'config/environments/development.rb',
|
20
|
+
'raise_delivery_errors = false', 'raise_delivery_errors = true'
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_partials_directory
|
24
|
+
empty_directory 'app/views/application'
|
25
|
+
empty_directory 'app/views/pages'
|
26
|
+
empty_directory 'app/views/common'
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_application_layout
|
30
|
+
template 'bootstrappers_layout.html.erb.erb',
|
31
|
+
'app/views/layouts/application.html.erb',
|
32
|
+
:force => true
|
33
|
+
end
|
34
|
+
|
35
|
+
def create_common_javascripts
|
36
|
+
directory 'javascripts', 'app/assets/javascripts'
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_common_stylesheets
|
40
|
+
directory 'stylesheets', 'app/assets/stylesheets'
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_common_partial
|
44
|
+
directory 'common', 'app/views/common'
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_jquery_ui
|
48
|
+
inject_into_file 'app/assets/javascripts/application.js',
|
49
|
+
"//= require jquery-ui\n", :before => '//= require_tree .'
|
50
|
+
end
|
51
|
+
|
52
|
+
def add_bootstrap_js
|
53
|
+
inject_into_file 'app/assets/javascripts/application.js',
|
54
|
+
"//= require twitter/bootstrap/alert\n", :before => '//= require_tree .'
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_custom_gems
|
58
|
+
additions_path = find_in_source_paths 'Gemfile_additions'
|
59
|
+
new_gems = File.open(additions_path).read
|
60
|
+
inject_into_file 'Gemfile', "\n#{new_gems}",
|
61
|
+
:after => /gem 'jquery-rails'/
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_devise_gem
|
65
|
+
inject_into_file 'Gemfile', "\ngem 'devise'",
|
66
|
+
:after => /gem 'jquery-rails'/
|
67
|
+
end
|
68
|
+
|
69
|
+
def use_mysql_config_template
|
70
|
+
|
71
|
+
template 'mysql_database.yml.erb', 'config/database.yml',
|
72
|
+
:force => true
|
73
|
+
template 'mysql_database.yml.erb', 'config/database.yml.example',
|
74
|
+
:force => true
|
75
|
+
end
|
76
|
+
|
77
|
+
def create_database
|
78
|
+
bundle_command 'exec rake db:create'
|
79
|
+
end
|
80
|
+
|
81
|
+
def generate_devise
|
82
|
+
generate 'devise:install'
|
83
|
+
generate 'devise User'
|
84
|
+
end
|
85
|
+
|
86
|
+
def build_settings_from_config
|
87
|
+
|
88
|
+
template 'setting.rb', 'app/models/setting.rb',:force => true
|
89
|
+
## seo_helper initialize setting
|
90
|
+
# FIXME : temp mark
|
91
|
+
# template 'seo_helper.rb', 'config/initializers/seo_helper.rb',:force => true
|
92
|
+
template 'config_yml.erb', 'config/config.yml',:force => true
|
93
|
+
end
|
94
|
+
|
95
|
+
def create_initializers
|
96
|
+
directory 'initializers', 'config/initializers'
|
97
|
+
end
|
98
|
+
|
99
|
+
def setup_stylesheets
|
100
|
+
copy_file 'app/assets/stylesheets/application.css', 'app/assets/stylesheets/application.css.scss'
|
101
|
+
remove_file 'app/assets/stylesheets/application.css'
|
102
|
+
concat_file 'import_scss_styles', 'app/assets/stylesheets/application.css.scss'
|
103
|
+
end
|
104
|
+
|
105
|
+
def setup_root_route
|
106
|
+
template 'welcome.html.erb', 'app/views/pages/welcome.html.erb',:force => true
|
107
|
+
route "root :to => 'high_voltage/pages#show', :id => 'welcome'"
|
108
|
+
end
|
109
|
+
|
110
|
+
def remove_routes_comment_lines
|
111
|
+
replace_in_file 'config/routes.rb', /Application\.routes\.draw do.*end/m, "Application.routes.draw do\nend"
|
112
|
+
end
|
113
|
+
|
114
|
+
def gitignore_files
|
115
|
+
concat_file 'bootstrappers_gitignore', '.gitignore'
|
116
|
+
['app/models',
|
117
|
+
'app/assets/images',
|
118
|
+
'app/views/pages',
|
119
|
+
'db/migrate',
|
120
|
+
'log',
|
121
|
+
].each do |dir|
|
122
|
+
empty_directory_with_gitkeep dir
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def init_git
|
127
|
+
run 'git init'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/rails/app/app_generator'
|
3
|
+
|
4
|
+
|
5
|
+
module Bootstrappers
|
6
|
+
class AppGenerator < Rails::Generators::AppGenerator
|
7
|
+
|
8
|
+
class_option :database, :type => :string, :aliases => '-d', :default => 'mysql',
|
9
|
+
:desc => "Preconfigure for selected database (options: #{DATABASES.join('/')})"
|
10
|
+
|
11
|
+
def finish_template
|
12
|
+
invoke :bootstrappers_customization
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def bootstrappers_customization
|
17
|
+
invoke :remove_files_we_dont_need
|
18
|
+
invoke :setup_development_environment
|
19
|
+
invoke :create_bootstrappers_views
|
20
|
+
invoke :create_common_partial
|
21
|
+
invoke :create_common_javascripts
|
22
|
+
invoke :create_common_stylesheets
|
23
|
+
invoke :add_common_js_library
|
24
|
+
invoke :customize_gemfile
|
25
|
+
invoke :setup_database
|
26
|
+
invoke :configure_app
|
27
|
+
# invoke :create_initializers
|
28
|
+
invoke :setup_stylesheets
|
29
|
+
invoke :remove_routes_comment_lines
|
30
|
+
invoke :setup_root_route
|
31
|
+
invoke :setup_git
|
32
|
+
end
|
33
|
+
|
34
|
+
def remove_files_we_dont_need
|
35
|
+
build :remove_public_index
|
36
|
+
build :remove_rails_logo_image
|
37
|
+
end
|
38
|
+
|
39
|
+
def setup_development_environment
|
40
|
+
say 'Setting up the development environment'
|
41
|
+
build :raise_delivery_errors
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_bootstrappers_views
|
45
|
+
say 'Creating bootstrappers views'
|
46
|
+
build :create_partials_directory
|
47
|
+
build :create_application_layout
|
48
|
+
end
|
49
|
+
|
50
|
+
def create_common_partial
|
51
|
+
say 'Pulling in some common partials'
|
52
|
+
build :create_common_partial
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_common_javascripts
|
56
|
+
say 'Pulling in some common javascripts'
|
57
|
+
build :create_common_javascripts
|
58
|
+
end
|
59
|
+
|
60
|
+
def create_common_stylesheets
|
61
|
+
say 'Pulling in some common stylesheets'
|
62
|
+
build :create_common_stylesheets
|
63
|
+
end
|
64
|
+
|
65
|
+
def add_common_js_library
|
66
|
+
say 'Add add_common_js_library to the standard application.js'
|
67
|
+
build :add_jquery_ui
|
68
|
+
build :add_bootstrap_js
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
def customize_gemfile
|
74
|
+
build :add_custom_gems
|
75
|
+
build :add_devise_gem
|
76
|
+
bundle_command 'install'
|
77
|
+
end
|
78
|
+
|
79
|
+
def setup_database
|
80
|
+
say 'Setting up database'
|
81
|
+
|
82
|
+
if 'mysql' == options[:database]
|
83
|
+
build :use_mysql_config_template
|
84
|
+
end
|
85
|
+
|
86
|
+
build :create_database
|
87
|
+
end
|
88
|
+
|
89
|
+
def configure_app
|
90
|
+
say 'Configuring app'
|
91
|
+
build :setup_devise
|
92
|
+
build :build_settings_from_config
|
93
|
+
# TODO
|
94
|
+
end
|
95
|
+
|
96
|
+
def create_initializers
|
97
|
+
say 'create_initializers'
|
98
|
+
build :create_initializers
|
99
|
+
end
|
100
|
+
|
101
|
+
def setup_devise
|
102
|
+
build :generate_devise
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
def customize_error_pages
|
107
|
+
say 'Customizing the 500/404/422 pages'
|
108
|
+
build :customize_error_pages
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def setup_stylesheets
|
113
|
+
say 'Set up stylesheets'
|
114
|
+
build :setup_stylesheets
|
115
|
+
end
|
116
|
+
|
117
|
+
def remove_routes_comment_lines
|
118
|
+
build :remove_routes_comment_lines
|
119
|
+
end
|
120
|
+
|
121
|
+
def setup_root_route
|
122
|
+
build :setup_root_route
|
123
|
+
end
|
124
|
+
|
125
|
+
def setup_git
|
126
|
+
say 'Initializing git'
|
127
|
+
invoke :setup_gitignore
|
128
|
+
invoke :init_git
|
129
|
+
end
|
130
|
+
|
131
|
+
def setup_gitignore
|
132
|
+
build :gitignore_files
|
133
|
+
end
|
134
|
+
|
135
|
+
def init_git
|
136
|
+
build :init_git
|
137
|
+
end
|
138
|
+
|
139
|
+
protected
|
140
|
+
|
141
|
+
def get_builder_class
|
142
|
+
Bootstrappers::AppBuilder
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
gem 'seo_helper', '~> 1.0'
|
3
|
+
|
4
|
+
gem "settingslogic"
|
5
|
+
|
6
|
+
gem 'anjlab-bootstrap-rails', '>= 2.1', :require => 'bootstrap-rails'
|
7
|
+
gem "bootstrap_helper", "2.1.0"
|
8
|
+
|
9
|
+
gem "simple_form", "2.0.3"
|
10
|
+
gem "will_paginate", "3.0.3"
|
11
|
+
|
12
|
+
gem 'high_voltage'
|
13
|
+
gem 'airbrake'
|
14
|
+
|
15
|
+
gem 'turbo-sprockets-rails3'
|
16
|
+
|
17
|
+
group :assets do
|
18
|
+
gem "compass-rails"
|
19
|
+
end
|
20
|
+
|
21
|
+
group :development do
|
22
|
+
gem "capistrano"
|
23
|
+
gem "cape"
|
24
|
+
gem "magic_encoding"
|
25
|
+
gem "annotate"
|
26
|
+
end
|
27
|
+
|
28
|
+
group :production do
|
29
|
+
gem 'newrelic_rpm'
|
30
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<%%= render_page_title_tag %>
|
5
|
+
<%%= render_page_description_meta_tag %>
|
6
|
+
<%%= render_page_keywords_meta_tag %>
|
7
|
+
<%%= render_page_image_link_tag %>
|
8
|
+
<%%= csrf_meta_tag %>
|
9
|
+
|
10
|
+
<%%= stylesheet_link_tag "application" %>
|
11
|
+
|
12
|
+
<%%= yield :stylesheets %>
|
13
|
+
|
14
|
+
<meta property="og:title" content="<%%= page_title || SeoHelper.configuration.site_name %>"/>
|
15
|
+
<meta property="og:description" content="<%%= page_description || SeoHelper.configuration.default_page_description %>"/>
|
16
|
+
<meta property="og:image:url" content="<%%= page_image || SeoHelper.configuration.default_page_image %>"/>
|
17
|
+
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<%%= render_body_tag %>
|
21
|
+
|
22
|
+
<%%= render :partial => "common/menu" %>
|
23
|
+
|
24
|
+
<div class="container">
|
25
|
+
|
26
|
+
<%%= notice_message %>
|
27
|
+
|
28
|
+
<div class="content">
|
29
|
+
<div class="row">
|
30
|
+
<%%= yield %>
|
31
|
+
<%%= yield (:sidebar) %>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<%%= render :partial => "common/footer" %>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
<%%= render :partial => "common/bootstrap_modal" %>
|
44
|
+
<%%= render :partial => "common/facebook_js" %>
|
45
|
+
<%%= render :partial => "common/google_analytics" %>
|
46
|
+
|
47
|
+
<%%= javascript_include_tag "application" %>
|
48
|
+
|
49
|
+
<%%= yield :javascripts %>
|
50
|
+
|
51
|
+
|
52
|
+
</body>
|
53
|
+
</html>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
<div id="fb-root"></div>
|
3
|
+
<script>(function(d, s, id) {
|
4
|
+
var js, fjs = d.getElementsByTagName(s)[0];
|
5
|
+
if (d.getElementById(id)) {return;}
|
6
|
+
js = d.createElement(s); js.id = id;
|
7
|
+
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=289554394417824";
|
8
|
+
fjs.parentNode.insertBefore(js, fjs);
|
9
|
+
}(document, 'script', 'facebook-jssdk'));</script>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<footer class="footer">
|
2
|
+
<%= render_list :class => "nav nav-pills pull-right" do |li|
|
3
|
+
#li << link_to( "Link1", "#")
|
4
|
+
#li << link_to( "Link2", "#")
|
5
|
+
#li << link_to( "Link3", "#")
|
6
|
+
#li << link_to( "Link4", "#")
|
7
|
+
end %>
|
8
|
+
<p class="copyright">Copyright @2012 <%= Setting.app_name %> All rights reserved.</p>
|
9
|
+
|
10
|
+
</footer>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<script type="text/javascript">
|
2
|
+
|
3
|
+
var _gaq = _gaq || [];
|
4
|
+
_gaq.push(['_setAccount', '<%= Setting.google_analytics_key %>']);
|
5
|
+
_gaq.push(['_trackPageview']);
|
6
|
+
|
7
|
+
(function() {
|
8
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
9
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
10
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
11
|
+
})();
|
12
|
+
|
13
|
+
</script>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="navbar navbar-fixed-top ">
|
2
|
+
<div class="navbar-inner top ">
|
3
|
+
<div class="container">
|
4
|
+
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
5
|
+
<span class="icon-bar"></span>
|
6
|
+
<span class="icon-bar"></span>
|
7
|
+
<span class="icon-bar"></span>
|
8
|
+
</a>
|
9
|
+
|
10
|
+
<%= link_to(Setting.app_name, Setting.domain , :class => "brand" )%>
|
11
|
+
|
12
|
+
<%= render :partial => "common/search_form" %>
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
<div class="nav-collapse">
|
17
|
+
|
18
|
+
<%= render_list :class => "nav" do |li|
|
19
|
+
li << link_to("Link-1","Link-1")
|
20
|
+
li << link_to("Link-2","Link-2")
|
21
|
+
li << link_to("Link-3","Link-3")
|
22
|
+
end %>
|
23
|
+
|
24
|
+
<%= render :partial => "common/user_nav"%>
|
25
|
+
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<%= yield :submenu %>
|
31
|
+
|
32
|
+
</div>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= form_tag "/search", :class => "navbar-search", :method => :get do %>
|
2
|
+
<span class="nav-toolbar-icon nav-toolbar-icon-search"></span>
|
3
|
+
<input type="text" name="q" class="search-query " value="<%= @query_string %>" placeholder="<%= @query_string || "Search" %>" />
|
4
|
+
|
5
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<ul class="nav pills pull-right">
|
2
|
+
<% if current_user %>
|
3
|
+
|
4
|
+
<li class="dropdown">
|
5
|
+
<%= link_to "/accoount" , :class => "dropdown-toggle", :data => { :toogle => "dropdown" } do %>
|
6
|
+
<%= current_user.email %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= render_list :class => "dropdown-menu" do |li|
|
10
|
+
li << link_to("Logout",destroy_user_session_path, :method => :delete )
|
11
|
+
end %>
|
12
|
+
|
13
|
+
</li>
|
14
|
+
|
15
|
+
<% else %>
|
16
|
+
<li> <%= link_to( "Sing Up" ,new_user_registration_path) %> </li>
|
17
|
+
<li> <%= link_to( "Login", new_user_session_path ) %> </li>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
|
21
|
+
</ul>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
app_name: "<%= app_name %>"
|
3
|
+
domain: "http://<%= app_name %>.dev"
|
4
|
+
facebook_app_id:
|
5
|
+
facebook_secret:
|
6
|
+
admin_emails:
|
7
|
+
- ""
|
8
|
+
google_analytics_key: ""
|
9
|
+
default_logo_url: "/logo.png"
|
10
|
+
|
11
|
+
development:
|
12
|
+
<<: *defaults
|
13
|
+
|
14
|
+
test:
|
15
|
+
<<: *defaults
|
16
|
+
|
17
|
+
production:
|
18
|
+
<<: *defaults
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
SeoHelper.configure do |config|
|
3
|
+
config.skip_blank = false
|
4
|
+
config.site_name = Setting.app_name
|
5
|
+
config.default_page_description = "The easiest way to keep like stuff on facebook"
|
6
|
+
config.default_page_keywords = "Facebook Likes Stuff"
|
7
|
+
config.default_page_image = Setting.domain + Setting.default_logo_url
|
8
|
+
config.site_name_formatter = lambda { |title, site_name| "#{title} « #{site_name}".html_safe }
|
9
|
+
config.pagination_formatter = lambda { |title, page_number| "#{title} - Page No.#{page_number}" }
|
10
|
+
|
11
|
+
end
|
File without changes
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bootstrappers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- xdite
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2012-10-08 00:00:00 +08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rails
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - "="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 3
|
29
|
+
- 2
|
30
|
+
- 8
|
31
|
+
version: 3.2.8
|
32
|
+
type: :runtime
|
33
|
+
prerelease: false
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 1
|
44
|
+
- 1
|
45
|
+
version: "1.1"
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id002
|
49
|
+
description: " Write a gem description"
|
50
|
+
email:
|
51
|
+
- xdite@rocodev.com
|
52
|
+
executables:
|
53
|
+
- bootstrapers
|
54
|
+
extensions: []
|
55
|
+
|
56
|
+
extra_rdoc_files: []
|
57
|
+
|
58
|
+
files:
|
59
|
+
- .gitignore
|
60
|
+
- Gemfile
|
61
|
+
- LICENSE.txt
|
62
|
+
- README.md
|
63
|
+
- Rakefile
|
64
|
+
- bin/bootstrapers
|
65
|
+
- bootstrapers.gemspec
|
66
|
+
- lib/bootstrapers.rb
|
67
|
+
- lib/bootstrappers/actions.rb
|
68
|
+
- lib/bootstrappers/app_builder.rb
|
69
|
+
- lib/bootstrappers/generators/app_generator.rb
|
70
|
+
- lib/bootstrappers/version.rb
|
71
|
+
- templates/Gemfile_additions
|
72
|
+
- templates/README.md.erb
|
73
|
+
- templates/bootstrappers_gitignore
|
74
|
+
- templates/bootstrappers_layout.html.erb.erb
|
75
|
+
- templates/common/_bootstrap_modal.html.erb
|
76
|
+
- templates/common/_facebook_js.erb
|
77
|
+
- templates/common/_footer.html.erb
|
78
|
+
- templates/common/_google_analytics.html.erb
|
79
|
+
- templates/common/_menu.html.erb
|
80
|
+
- templates/common/_search_form.html.erb
|
81
|
+
- templates/common/_user_nav.html.erb
|
82
|
+
- templates/config_yml.erb
|
83
|
+
- templates/import_scss_styles
|
84
|
+
- templates/initializers/seo_helper.rb
|
85
|
+
- templates/javascripts/README
|
86
|
+
- templates/mysql_database.yml.erb
|
87
|
+
- templates/setting.rb
|
88
|
+
- templates/stylesheets/bootstrap-override.css.scss
|
89
|
+
- templates/stylesheets/bootstrap-setting.css.scss
|
90
|
+
- templates/welcome.html.erb
|
91
|
+
has_rdoc: true
|
92
|
+
homepage: ""
|
93
|
+
licenses: []
|
94
|
+
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 2624694465842870349
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 2624694465842870349
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
requirements: []
|
119
|
+
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 1.3.7.1
|
122
|
+
signing_key:
|
123
|
+
specification_version: 3
|
124
|
+
summary: Write a gem summary
|
125
|
+
test_files: []
|
126
|
+
|