derail 0.0.1
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.
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +87 -0
- data/VERSION +1 -0
- data/app/helpers/activated_link_helper.rb +48 -0
- data/app/helpers/flashes_helper.rb +9 -0
- data/app/helpers/text_helper.rb +55 -0
- data/derail.gemspec +24 -0
- data/lib/derail.rb +15 -0
- data/lib/derail/core_ext/string.rb +11 -0
- data/lib/derail/engine.rb +3 -0
- data/lib/derail/generators.rb +46 -0
- data/lib/generators/derail/app/USAGE +1 -0
- data/lib/generators/derail/app/app_generator.rb +147 -0
- data/lib/generators/derail/app/bootstrap.rb +124 -0
- data/lib/generators/derail/devise/USAGE +1 -0
- data/lib/generators/derail/devise/devise_generator.rb +25 -0
- data/lib/generators/derail/devise/haml/USAGE +1 -0
- data/lib/generators/derail/devise/haml/haml_generator.rb +13 -0
- data/lib/templates/devise/haml/views/_footer.html.haml +32 -0
- data/lib/templates/devise/haml/views/confirmations/new.html.haml +15 -0
- data/lib/templates/devise/haml/views/mailer/confirmation_instructions.html.erb +5 -0
- data/lib/templates/devise/haml/views/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/templates/devise/haml/views/mailer/unlock_instructions.html.erb +7 -0
- data/lib/templates/devise/haml/views/passwords/edit.html.haml +18 -0
- data/lib/templates/devise/haml/views/passwords/new.html.haml +15 -0
- data/lib/templates/devise/haml/views/registrations/edit.html.haml +33 -0
- data/lib/templates/devise/haml/views/registrations/new.html.haml +17 -0
- data/lib/templates/devise/haml/views/sessions/new.html.haml +18 -0
- data/lib/templates/devise/haml/views/unlocks/new.html.haml +15 -0
- data/lib/templates/haml/scaffold/_form.html.haml +8 -0
- data/lib/templates/haml/scaffold/edit.html.haml +8 -0
- data/lib/templates/haml/scaffold/index.html.haml +17 -0
- data/lib/templates/haml/scaffold/new.html.haml +7 -0
- data/lib/templates/haml/scaffold/show.html.haml +12 -0
- data/lib/templates/scaffold_controller/controller.rb +38 -0
- data/vendor/assets/javascripts/innershiv.js +2 -0
- data/vendor/assets/javascripts/jquery_autolink.js +7 -0
- data/vendor/assets/javascripts/jquery_highlight.js +7 -0
- data/vendor/assets/javascripts/jquery_innershiv.js +21 -0
- data/vendor/assets/javascripts/jquery_mailto.js +8 -0
- data/vendor/assets/javascripts/jquery_timeago.js +149 -0
- data/vendor/assets/javascripts/modernizr.js +1116 -0
- metadata +112 -0
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Samuel Cochran
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# Derail
|
2
|
+
|
3
|
+
A collection of helpers and libraries which I use in almost every project, and a generator to get started quickly.
|
4
|
+
|
5
|
+
Some of this stuff may graduate into gems or get contributed back to other projects.
|
6
|
+
|
7
|
+
## Features
|
8
|
+
|
9
|
+
* Generators:
|
10
|
+
* `derail:app`: Derails a new rails project, basically doing all the following:
|
11
|
+
* Configure databases:
|
12
|
+
* development: _APPNAME_\_development/development/development
|
13
|
+
* test: _APPNAME_\_test/test/test
|
14
|
+
* production: read from environment (DATABASE/DATABASE\_USERNAME/DATABASE\_PASSWORD).
|
15
|
+
* Configure ActionMailer:
|
16
|
+
* development: default\_url\_options to `_APPNAME_.dev`, [MailCatcher](https://github.com/sj26/mailcatcher) delivery.
|
17
|
+
* test: default\_url\_options to `_APPNAME_.test`.
|
18
|
+
* Makes SASS the default stylesheet syntax (not SCSS) and converts application.css to application.css.sass.
|
19
|
+
* Converts application.js to application.js.coffee.
|
20
|
+
* Installs [RSpec](http://rspec.info/)
|
21
|
+
* Installs [Cucumber](http://cukes.info/)
|
22
|
+
* Installs [RR](https://github.com/btakita/rr)
|
23
|
+
* Installs [Guard](https://github.com/guard/guard) ([ego](https://github.com/guard/guard-ego), [bundler](https://github.com/guard/guard-bundler), [rspec](https://github.com/guard/guard-rspec), [cucumber](https://github.com/guard/guard-cucumber))
|
24
|
+
* Runs `formtastic:install`
|
25
|
+
* Runs `derail:devise`
|
26
|
+
* Removes default `index.html` and `rails.png`
|
27
|
+
* `derail:devise`: Install devise, setup a user, install [remarkable_devise](https://github.com/sj26/remarkable_devise).
|
28
|
+
* `derail:devise:haml`: Installs fully-localizable, HTML5, formtastic Devise HAML templates.
|
29
|
+
* Updated scaffold templates:
|
30
|
+
* HTML5, formtastic scaffold HAML templates.
|
31
|
+
* [Responder](https://github.com/rails/rails/tree/3-1-stable/actionpack/lib/action_controller/metal/responder.rb)-based scaffold controller.
|
32
|
+
* Helpers:
|
33
|
+
* Activated link helper, adapted from a few places. Documentation coming.
|
34
|
+
* Flashes helper, lists all your flashes in aside elements.
|
35
|
+
* Text helper with *working* truncate\_html using Hpricot.
|
36
|
+
* Vendored javascripts:
|
37
|
+
* [modernizr](http://www.modernizr.com/).
|
38
|
+
* [innershiv](http://jdbartlett.com/innershiv/) and [jQuery innershiv](http://tomcoote.co.uk/javascript/ajax-html5-in-ie/).
|
39
|
+
* [jQuery autolink, mailto and highlight helpers](http://kawika.org/jquery/index.php?section=autolink), separated for leanness.
|
40
|
+
* [jQuery.timeago](http://timeago.yarp.com/)
|
41
|
+
* Plenty more to come!
|
42
|
+
|
43
|
+
## Use
|
44
|
+
|
45
|
+
To create a new app, I run:
|
46
|
+
|
47
|
+
rails new APPNAME --skip-test-unit --database=postgresql --template http://sj26.com/derail
|
48
|
+
|
49
|
+
For handyness in [zsh](http://zsh.org):
|
50
|
+
|
51
|
+
function derail() { rails new $1 --skip-test-unit --database=postgresql --template http://sj26.com/derail $@[2,-1] }
|
52
|
+
|
53
|
+
then
|
54
|
+
|
55
|
+
derail APPNAME
|
56
|
+
|
57
|
+
### Vendored javascripts
|
58
|
+
|
59
|
+
Add them to your applictation's javascript files using sprockets require directives, a la jQuery:
|
60
|
+
|
61
|
+
//= require jquery_innershiv
|
62
|
+
|
63
|
+
## Caveats
|
64
|
+
|
65
|
+
* It's Rails 3.1 only, but you should be basing your new projects on the latest and greatest! It'll be stable by the time you release... right?
|
66
|
+
* I'm presuming your using [my devise branch](https://github.com/sj26/devise/tree/template-inheritence):
|
67
|
+
|
68
|
+
gem "devise", :git => "git://github.com/sj26/devise.git", :branch => "template-inheritence"
|
69
|
+
|
70
|
+
If not, copy the HAML templates into your project and re-twiddle the footer partial.
|
71
|
+
|
72
|
+
## TODO
|
73
|
+
|
74
|
+
* Home generator.
|
75
|
+
* Admin generator.
|
76
|
+
* Admin scaffold generator.
|
77
|
+
* Pages generator.
|
78
|
+
* (Some) in-app errors handler generator.
|
79
|
+
* Page title helper inspired by [page\_title\_helper](https://github.com/lwe/page_title_helper)
|
80
|
+
* Vendored WYSIWYG (can't decide which library).
|
81
|
+
* Formtastic WYSIWYG field helpers.
|
82
|
+
* Tilt-based renderable activerecord fields with filter white/blacklists and stored filter type.
|
83
|
+
* More tests.
|
84
|
+
|
85
|
+
## License
|
86
|
+
|
87
|
+
Copyright (c) 2011 Samuel Cochran, released under the MIT license, see LICENSE.
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module ActivatedLinkHelper
|
2
|
+
def activated_link_to *args, &block
|
3
|
+
if block_given?
|
4
|
+
name = capture(&block)
|
5
|
+
options = args[0] || {}
|
6
|
+
html_options = args[1] || {}
|
7
|
+
else
|
8
|
+
name = args[0]
|
9
|
+
options = args[1] || {}
|
10
|
+
html_options = args[2] || {}
|
11
|
+
end
|
12
|
+
|
13
|
+
options = options.clone
|
14
|
+
html_options = html_options.clone
|
15
|
+
|
16
|
+
url = url_for(options)
|
17
|
+
active_link_options = html_options.delete(:active) || {}
|
18
|
+
|
19
|
+
match = request.fullpath.match(/^#{Regexp.escape(url)}(?:\/(.*)$)?/)
|
20
|
+
|
21
|
+
active = if html_options.delete(:exact)
|
22
|
+
match.present? and (match[1].blank? or match[1] == "/")
|
23
|
+
elsif paths = (html_options.delete(:only_paths).presence || html_options.delete(:only_path).presence)
|
24
|
+
match.present? and (match[1].blank? or match[1] == "/") || if paths.is_a? Array
|
25
|
+
paths.include? match[1]
|
26
|
+
elsif paths.is_a? Regexp
|
27
|
+
paths.match(match[1]).present?
|
28
|
+
else
|
29
|
+
paths == match[1]
|
30
|
+
end
|
31
|
+
else
|
32
|
+
request.fullpath.match(/^#{Regexp.escape(url)}(\/|$)/).present?
|
33
|
+
end
|
34
|
+
|
35
|
+
css_class = if active
|
36
|
+
'active'
|
37
|
+
else
|
38
|
+
'inactive'
|
39
|
+
end
|
40
|
+
|
41
|
+
html_options[:class] ||= ''
|
42
|
+
html_options[:class] += " #{css_class}" if !css_class.blank?
|
43
|
+
html_options[:class].strip!
|
44
|
+
html_options.delete(:class) if html_options[:class].blank?
|
45
|
+
|
46
|
+
link_to(name, url, html_options)
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "hpricot"
|
2
|
+
|
3
|
+
# Adapted from http://henrik.nyh.se/2008/01/rails-truncate-html-helper
|
4
|
+
|
5
|
+
module TextHelper
|
6
|
+
# Like the Rails _truncate_ helper but doesn't break HTML tags or entities.
|
7
|
+
def truncate_html(text, options={})
|
8
|
+
return if text.nil?
|
9
|
+
|
10
|
+
length = options.delete(:length) || 30
|
11
|
+
omission = options.delete(:omission).to_s || "..."
|
12
|
+
text = text.to_s
|
13
|
+
|
14
|
+
document = Hpricot(text)
|
15
|
+
omission_length = Hpricot(omission).inner_text.chars.count
|
16
|
+
content_length = document.inner_text.chars.count
|
17
|
+
|
18
|
+
content_length > length ? document.truncate([length - omission_length, 0].max).inner_html + omission : text
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module HpricotTruncator
|
23
|
+
module NodeWithChildren
|
24
|
+
def truncate(length)
|
25
|
+
return self if inner_text.chars.count <= length
|
26
|
+
truncated_node = self.dup
|
27
|
+
truncated_node.children = []
|
28
|
+
each_child do |node|
|
29
|
+
remaining_length = length - truncated_node.inner_text.chars.count
|
30
|
+
break if remaining_length == 0
|
31
|
+
truncated_node.children << node.truncate(remaining_length)
|
32
|
+
end
|
33
|
+
truncated_node
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module TextNode
|
38
|
+
def truncate(length)
|
39
|
+
# We're using String#scan because Hpricot doesn't distinguish entities.
|
40
|
+
Hpricot::Text.new(content.scan(/&#?[^\W_]+;|./).first(length).join)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
module IgnoredTag
|
45
|
+
def truncate(length)
|
46
|
+
self
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
Hpricot::Doc.send(:include, HpricotTruncator::NodeWithChildren)
|
52
|
+
Hpricot::Elem.send(:include, HpricotTruncator::NodeWithChildren)
|
53
|
+
Hpricot::Text.send(:include, HpricotTruncator::TextNode)
|
54
|
+
Hpricot::BogusETag.send(:include, HpricotTruncator::IgnoredTag)
|
55
|
+
Hpricot::Comment.send(:include, HpricotTruncator::IgnoredTag)
|
data/derail.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "derail"
|
3
|
+
s.version = File.read(File.expand_path("../VERSION", __FILE__)).strip
|
4
|
+
s.platform = Gem::Platform::RUBY
|
5
|
+
s.summary = "sj26's collection of rails bits and pieces."
|
6
|
+
s.description = <<-END
|
7
|
+
Derail is a collection of helpers and libraries which I use in
|
8
|
+
almost every project, and a generator to get started quickly.
|
9
|
+
END
|
10
|
+
|
11
|
+
s.author = "Samuel Cochran"
|
12
|
+
s.email = "sj26@sj26.com"
|
13
|
+
s.homepage = "https://github.com/sj26/derail"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.executables = `git ls-files`.split("\n").select{|f| f =~ /^bin/}
|
17
|
+
s.require_path = "lib"
|
18
|
+
s.extra_rdoc_files = ["README.md", "LICENSE"]
|
19
|
+
|
20
|
+
s.required_ruby_version = '>= 1.8.7'
|
21
|
+
|
22
|
+
s.add_dependency "railties", ">= 3.1.rc4"
|
23
|
+
s.add_dependency "formtastic", ">= 2.0.0.rc3"
|
24
|
+
end
|
data/lib/derail.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'derail/core_ext/string'
|
2
|
+
|
3
|
+
module Derail
|
4
|
+
VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).strip
|
5
|
+
|
6
|
+
extend ActiveSupport::Autoload
|
7
|
+
|
8
|
+
require 'derail/engine'
|
9
|
+
|
10
|
+
autoload :Generators
|
11
|
+
autoload_under :ActiveRecord do
|
12
|
+
autoload :Unique
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class String
|
2
|
+
def dedent
|
3
|
+
indent = lines.reject(&:empty?).map { |line| line.index(/\S/) }.compact.min
|
4
|
+
gsub /^ {1,#{indent.to_i}}/, ''
|
5
|
+
end unless method_defined? :dedent
|
6
|
+
|
7
|
+
def redent prefix
|
8
|
+
prefix = " " * prefix if prefix.is_a? Numeric
|
9
|
+
dedent.gsub! /^(?=[ \t]*\S+)/, prefix
|
10
|
+
end unless method_defined? :redent
|
11
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Derail::Generators
|
2
|
+
class Base < Rails::Generators::Base
|
3
|
+
source_root File.expand_path '../../templates'
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def rvm *args
|
8
|
+
options = args.extract_options!
|
9
|
+
say_status :run, "rvm #{args * " "}" # unless options[:verbose] === false
|
10
|
+
system (["rvm"] + args) * " "
|
11
|
+
end
|
12
|
+
|
13
|
+
def rvm_run *args
|
14
|
+
args << args.extract_options!.merge(:verbose => false)
|
15
|
+
rvm "--with-rubies", "default-with-rvmrc", "exec", *args
|
16
|
+
end
|
17
|
+
|
18
|
+
def bundle *args
|
19
|
+
options = args.extract_options!
|
20
|
+
say_status :run, "bundle #{args * " "}" # unless options[:verbose] === false
|
21
|
+
rvm_run "bundle", *args
|
22
|
+
end
|
23
|
+
|
24
|
+
def bundle_run *args
|
25
|
+
args << args.extract_options!.merge(:verbose => false)
|
26
|
+
bundle "exec", *args
|
27
|
+
end
|
28
|
+
|
29
|
+
# Override run to run in our rvm/bundle
|
30
|
+
alias run bundle_run
|
31
|
+
|
32
|
+
# Override generate to run in bundle
|
33
|
+
def generate *args
|
34
|
+
say_status :generate, args * " "
|
35
|
+
bundle_run "rails", "generate", *args
|
36
|
+
end
|
37
|
+
|
38
|
+
def app_name
|
39
|
+
Rails.application.class.parent_name
|
40
|
+
end
|
41
|
+
|
42
|
+
def app_slug
|
43
|
+
app_name.underscore
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Derail a new rails application.
|
@@ -0,0 +1,147 @@
|
|
1
|
+
module Derail::Generators
|
2
|
+
class AppGenerator < Base
|
3
|
+
def configure_database
|
4
|
+
# The original is full of noise, ick.
|
5
|
+
remove_file "config/database.yml", :verbose => false
|
6
|
+
create_file "config/database.yml", <<-RUBY.dedent
|
7
|
+
development:
|
8
|
+
adapter: postgresql
|
9
|
+
encoding: unicode
|
10
|
+
pool: 5
|
11
|
+
database: #{app_slug}_development
|
12
|
+
username: development
|
13
|
+
password: development
|
14
|
+
|
15
|
+
test:
|
16
|
+
adapter: postgresql
|
17
|
+
encoding: unicode
|
18
|
+
pool: 5
|
19
|
+
database: #{app_slug}_test
|
20
|
+
username: test
|
21
|
+
password: test
|
22
|
+
|
23
|
+
production:
|
24
|
+
adapter: postgresql
|
25
|
+
encoding: unicode
|
26
|
+
pool: 5
|
27
|
+
database: <%= ENV["DATABASE"] %>
|
28
|
+
username: <%= ENV["DATABASE_USERNAME"] %>
|
29
|
+
password: <%= ENV["DATABASE_PASSWORD"] %>
|
30
|
+
RUBY
|
31
|
+
end
|
32
|
+
|
33
|
+
def configure_action_mailer
|
34
|
+
inject_into_file "config/environments/development.rb", <<-RUBY.redent(2), :after => /config.action_mailer.*?\n/
|
35
|
+
|
36
|
+
# Development URL
|
37
|
+
config.action_mailer.default_url_options = { :host => '#{app_slug}.dev' }
|
38
|
+
|
39
|
+
# Send mail via MailCatcher
|
40
|
+
config.action_mailer.smtp_settings = { :address => 'localhost', :port => 1025 }
|
41
|
+
RUBY
|
42
|
+
|
43
|
+
inject_into_file "config/environments/test.rb", <<-RUBY.redent(2), :after => /config.action_mailer.*?\n/
|
44
|
+
|
45
|
+
# Testing URL
|
46
|
+
config.action_mailer.default_url_options = { :host => '#{app_slug}.test' }
|
47
|
+
RUBY
|
48
|
+
end
|
49
|
+
|
50
|
+
def configure_sass
|
51
|
+
inject_into_file "config/application.rb", <<-RUBY.redent(4), :after => /config\.assets[^\n]*\n/
|
52
|
+
|
53
|
+
# Use SASS by default
|
54
|
+
config.generators.stylesheet_engine = :sass
|
55
|
+
RUBY
|
56
|
+
|
57
|
+
bundle_run "sass-convert", "app/assets/stylesheets/application.css", "app/assets/stylesheets/application.css.sass"
|
58
|
+
remove_file "app/assets/stylesheets/application.css"
|
59
|
+
end
|
60
|
+
|
61
|
+
def configure_coffee
|
62
|
+
system "mv", "app/assets/javascripts/application.js", "app/assets/javascripts/application.js.coffee"
|
63
|
+
gsub_file "app/assets/javascripts/application.js.coffee", %r{^//}, "#"
|
64
|
+
end
|
65
|
+
|
66
|
+
def install_rspec
|
67
|
+
# TODO: Make optional
|
68
|
+
generate "rspec:install"
|
69
|
+
end
|
70
|
+
|
71
|
+
def install_cucumber
|
72
|
+
# TODO: Make optional
|
73
|
+
generate "cucumber:install"
|
74
|
+
end
|
75
|
+
|
76
|
+
def install_rr
|
77
|
+
gsub_file "spec/spec_helper.rb", /[ \t]*# == Mock Framework\n(.*)\n[ \t]*config\.mock_with[ \t]*\S+\n/m, <<-RUBY.redent(2)
|
78
|
+
# == Mock Framework
|
79
|
+
config.mock_with :rr
|
80
|
+
RUBY
|
81
|
+
|
82
|
+
# TODO: Insert RR cucumber support
|
83
|
+
end
|
84
|
+
|
85
|
+
def install_guard
|
86
|
+
# TODO: Make optional
|
87
|
+
say_status :create, "Guardfile"
|
88
|
+
["ego", "bundler", "rspec", "cucumber"].each do |guard|
|
89
|
+
bundle_run "guard", "init", guard
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def generate_formtastic
|
94
|
+
# TODO: Make optional
|
95
|
+
generate "formtastic:install"
|
96
|
+
end
|
97
|
+
|
98
|
+
def generate_layouts
|
99
|
+
# TODO: Layouts
|
100
|
+
# TODO: Make optional
|
101
|
+
#generate "derail:layout"
|
102
|
+
end
|
103
|
+
|
104
|
+
def generate_home
|
105
|
+
# TODO: Home
|
106
|
+
# TODO: Make optional
|
107
|
+
#generate "derail:home"
|
108
|
+
end
|
109
|
+
|
110
|
+
def generate_devise
|
111
|
+
# TODO: Make optional
|
112
|
+
generate "derail:devise"
|
113
|
+
end
|
114
|
+
|
115
|
+
def generate_dashboard
|
116
|
+
# TODO: Dashboard
|
117
|
+
# TODO: Make optional
|
118
|
+
#generate "derail:dashboard"
|
119
|
+
end
|
120
|
+
|
121
|
+
def generate_admin
|
122
|
+
# TODO: Admin
|
123
|
+
# TODO: Make optional
|
124
|
+
#generate "derail:admin"
|
125
|
+
end
|
126
|
+
|
127
|
+
def generate_pages
|
128
|
+
# TODO: Pages
|
129
|
+
# TODO: Make optional
|
130
|
+
#generate "derail:pages"
|
131
|
+
end
|
132
|
+
|
133
|
+
def generate_errors
|
134
|
+
# TODO: Error handling
|
135
|
+
# TODO: Make optional
|
136
|
+
#generate "derail:errors"
|
137
|
+
end
|
138
|
+
|
139
|
+
def remove_index
|
140
|
+
remove_file "public/index.html"
|
141
|
+
end
|
142
|
+
|
143
|
+
def remove_rails_logo
|
144
|
+
remove_file "app/assets/images/rails.png"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|