furious-generators 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.
Files changed (40) hide show
  1. data/.gitignore +0 -0
  2. data/README.md +66 -0
  3. data/Rakefile +25 -0
  4. data/VERSION +1 -0
  5. data/furious-generators.gemspec +75 -0
  6. data/lib/furious_generators.rb +3 -0
  7. data/rails_generators/furious_auth/USAGE +0 -0
  8. data/rails_generators/furious_auth/furious_auth_generator.rb +128 -0
  9. data/rails_generators/furious_auth/templates/application_controller.rb +46 -0
  10. data/rails_generators/furious_auth/templates/create_users.rb +30 -0
  11. data/rails_generators/furious_auth/templates/user.rb +3 -0
  12. data/rails_generators/furious_auth/templates/user_session.rb +2 -0
  13. data/rails_generators/furious_auth/templates/user_sessions_controller.rb +24 -0
  14. data/rails_generators/furious_auth/templates/users_controller.rb +40 -0
  15. data/rails_generators/furious_auth/templates/views/user_sessions/new.rb +23 -0
  16. data/rails_generators/furious_auth/templates/views/users/_form.erb +11 -0
  17. data/rails_generators/furious_auth/templates/views/users/_form.rb +19 -0
  18. data/rails_generators/furious_auth/templates/views/users/edit.html.erb +9 -0
  19. data/rails_generators/furious_auth/templates/views/users/edit.rb +9 -0
  20. data/rails_generators/furious_auth/templates/views/users/new.html.erb +7 -0
  21. data/rails_generators/furious_auth/templates/views/users/new.rb +9 -0
  22. data/rails_generators/furious_auth/templates/views/users/show.html.erb +37 -0
  23. data/rails_generators/furious_auth/templates/views/users/show.rb +37 -0
  24. data/rails_generators/furious_blueprint/USAGE +0 -0
  25. data/rails_generators/furious_blueprint/furious_blueprint_generator.rb +17 -0
  26. data/rails_generators/furious_blueprint/templates/ie.css +35 -0
  27. data/rails_generators/furious_blueprint/templates/print.css +29 -0
  28. data/rails_generators/furious_blueprint/templates/screen.css +257 -0
  29. data/rails_generators/furious_jquery/USAGE +0 -0
  30. data/rails_generators/furious_jquery/furious_jquery_generator.rb +15 -0
  31. data/rails_generators/furious_jquery/templates/jquery-1.3.2.js +4376 -0
  32. data/rails_generators/furious_jquery/templates/jquery-ui-1.7.2.custom.min.js +298 -0
  33. data/rails_generators/furious_layout/USAGE +0 -0
  34. data/rails_generators/furious_layout/furious_layout_generator.rb +36 -0
  35. data/rails_generators/furious_layout/templates/helper.rb +0 -0
  36. data/rails_generators/furious_layout/templates/javascript.rb +0 -0
  37. data/rails_generators/furious_layout/templates/layout-erb.rb +0 -0
  38. data/rails_generators/furious_layout/templates/layout-haml.rb +0 -0
  39. data/rails_generators/furious_layout/templates/stylesheet.rb +0 -0
  40. metadata +93 -0
File without changes
@@ -0,0 +1,66 @@
1
+ Furious Generators
2
+ =============
3
+
4
+ Furious Generators are a set of rails generators by [Trevor Oke](http://trevoroke.com) that you can use to help create
5
+ rails applications more quickly.
6
+
7
+ Installation
8
+ ------------
9
+
10
+ Install the gem with:
11
+
12
+ sudo gem install furious-generators -s http://gemcutter.org
13
+
14
+ You can also install it as a rails plugin:
15
+
16
+ script/plugin install git://github.com/thefury/furious-generators.git
17
+
18
+ Usage
19
+ -----
20
+
21
+ ### Blueprint Generator
22
+
23
+ Add the blueprint css files to your public/stylesheets folder.
24
+
25
+ script/generate furious-blueprint
26
+
27
+ ### JQuery Generator
28
+
29
+ Add the jquery and jquery-ui files to your public/javascripts folder.
30
+
31
+ script/generate furious-jquery
32
+
33
+ ### Layout Generator
34
+
35
+ Create a standard modifiable layout along with associated css, js, and helper files
36
+
37
+ script/generate furious-layout
38
+
39
+
40
+ Contributing
41
+ ---
42
+
43
+ * Fork this repository.
44
+ * Make your changes.
45
+ * Be sure to include tests!
46
+ * Send a pull request.
47
+
48
+ Links
49
+ -----
50
+
51
+ * Repository: git://github.com/thefury/furious-generators.git
52
+ * Issues: <http://github.com/thefury/furious-generators/issues>
53
+ * Gem: <http://gemcutter.org/gems/furious-generators>
54
+
55
+ Author
56
+ ------
57
+
58
+ Trevor Oke - [http://trevoroke.com](http://trevoroke.com)
59
+
60
+ Credits
61
+ -------
62
+
63
+ A number of other libraries have been included in these generators:
64
+
65
+ * Blueprint CSS: <http://www.blueprintcss.org/>
66
+ * JQuery: <http://jquery.com/>
@@ -0,0 +1,25 @@
1
+ require "rubygems"
2
+ require "cucumber/rake/task"
3
+ require "spec/rake/spectask"
4
+
5
+ Cucumber::Rake::Task.new
6
+
7
+ Spec::Rake::SpecTask.new do |t|
8
+ t.spec_files = FileList['test/**/*_spec.rb']
9
+ end
10
+
11
+ task :default => [:spec, :cucumber]
12
+
13
+ begin
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gemspec|
16
+ gemspec.name = "furious-generators"
17
+ gemspec.summary = "Custom generators for Rails applications"
18
+ gemspec.description = "Custom generators for Rails applications"
19
+ gemspec.email = "trevor@trevoroke.com"
20
+ gemspec.homepage = "http://github.com/thefury/furious-generators"
21
+ gemspec.authors = ["Trevor Oke"]
22
+ end
23
+ rescue LoadError
24
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
25
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,75 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{furious-generators}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Trevor Oke"]
12
+ s.date = %q{2009-12-10}
13
+ s.description = %q{Custom generators for Rails applications}
14
+ s.email = %q{trevor@trevoroke.com}
15
+ s.extra_rdoc_files = [
16
+ "README.md"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "README.md",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "furious-generators.gemspec",
24
+ "lib/furious_generators.rb",
25
+ "rails_generators/furious_auth/USAGE",
26
+ "rails_generators/furious_auth/furious_auth_generator.rb",
27
+ "rails_generators/furious_auth/templates/application_controller.rb",
28
+ "rails_generators/furious_auth/templates/create_users.rb",
29
+ "rails_generators/furious_auth/templates/user.rb",
30
+ "rails_generators/furious_auth/templates/user_session.rb",
31
+ "rails_generators/furious_auth/templates/user_sessions_controller.rb",
32
+ "rails_generators/furious_auth/templates/users_controller.rb",
33
+ "rails_generators/furious_auth/templates/views/user_sessions/new.rb",
34
+ "rails_generators/furious_auth/templates/views/users/_form.erb",
35
+ "rails_generators/furious_auth/templates/views/users/_form.rb",
36
+ "rails_generators/furious_auth/templates/views/users/edit.html.erb",
37
+ "rails_generators/furious_auth/templates/views/users/edit.rb",
38
+ "rails_generators/furious_auth/templates/views/users/new.html.erb",
39
+ "rails_generators/furious_auth/templates/views/users/new.rb",
40
+ "rails_generators/furious_auth/templates/views/users/show.html.erb",
41
+ "rails_generators/furious_auth/templates/views/users/show.rb",
42
+ "rails_generators/furious_blueprint/USAGE",
43
+ "rails_generators/furious_blueprint/furious_blueprint_generator.rb",
44
+ "rails_generators/furious_blueprint/templates/ie.css",
45
+ "rails_generators/furious_blueprint/templates/print.css",
46
+ "rails_generators/furious_blueprint/templates/screen.css",
47
+ "rails_generators/furious_jquery/USAGE",
48
+ "rails_generators/furious_jquery/furious_jquery_generator.rb",
49
+ "rails_generators/furious_jquery/templates/jquery-1.3.2.js",
50
+ "rails_generators/furious_jquery/templates/jquery-ui-1.7.2.custom.min.js",
51
+ "rails_generators/furious_layout/USAGE",
52
+ "rails_generators/furious_layout/furious_layout_generator.rb",
53
+ "rails_generators/furious_layout/templates/helper.rb",
54
+ "rails_generators/furious_layout/templates/javascript.rb",
55
+ "rails_generators/furious_layout/templates/layout-erb.rb",
56
+ "rails_generators/furious_layout/templates/layout-haml.rb",
57
+ "rails_generators/furious_layout/templates/stylesheet.rb"
58
+ ]
59
+ s.homepage = %q{http://github.com/thefury/furious-generators}
60
+ s.rdoc_options = ["--charset=UTF-8"]
61
+ s.require_paths = ["lib"]
62
+ s.rubygems_version = %q{1.3.5}
63
+ s.summary = %q{Custom generators for Rails applications}
64
+
65
+ if s.respond_to? :specification_version then
66
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
67
+ s.specification_version = 3
68
+
69
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
70
+ else
71
+ end
72
+ else
73
+ end
74
+ end
75
+
@@ -0,0 +1,3 @@
1
+ module FuriousGenerators
2
+ # empty
3
+ end
File without changes
@@ -0,0 +1,128 @@
1
+ class FuriousAuthGenerator < Rails::Generator::Base
2
+ def intialize
3
+ end
4
+
5
+ def manifest
6
+ record do |m|
7
+ # directories
8
+ m.directory("app/controllers")
9
+ m.directory("app/models")
10
+ m.directory("app/views")
11
+ m.directory("app/views/user_sessions")
12
+ m.directory("app/views/users")
13
+ m.directory("db/migrate")
14
+
15
+ # controllers
16
+ m.file "users_controller.rb", "app/controllers/users_controller.rb"
17
+ m.file "user_sessions_controller.rb", "app/controllers/user_sessions_controller.rb"
18
+ m.file "application_controller.rb", "app/controllers/application_controller.rb"
19
+
20
+ # models
21
+ m.file "user.rb", "app/models/user.rb"
22
+ m.file "user_session.rb", "app/models/user_session.rb"
23
+
24
+ # views
25
+ m.file "views/user_sessions/new.rb", "app/views/user_sessions/new.html.haml"
26
+ ['_form', 'new', 'edit', 'show'].each do |fname|
27
+ m.file "views/users/#{fname}.rb", "app/views/users/#{fname}.html.haml"
28
+ end
29
+
30
+ # database migrations
31
+ m.migration_template "create_users.rb", "db/migrate", { :migration_file_name => "create_authlogic_users" }
32
+
33
+ # routes
34
+ m.route_resources "users"
35
+ m.route_resource "user_session"
36
+ m.route :name => "register", :controller => "users", :action => "new"
37
+ m.route :name => "logout", :controller => "user_sessions", :action => "destroy"
38
+ m.route :name => "login", :controller => "user_sessions", :action => "new"
39
+ m.route :name => "settings", :controller => "settings", :action => "index"
40
+ m.route :name => "account", :controller => "users", :action => 'show'
41
+
42
+ # required gems
43
+ m.gem :name => 'authlogic'
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ module Rails
50
+ module Generator
51
+ module Commands
52
+ class Base
53
+ def resource_route_code(*resources)
54
+ resource_list = resources.map { |r|}.join(', ')
55
+ code = "map.resource #{resource_list}"
56
+ end
57
+
58
+ def route_code(route_options)
59
+ code = "map.#{route_options[:name]} '#{route_options[:name]}', :controller => '#{route_options[:controller]}'"
60
+ code += ", :action => '#{route_options[:action]}'" unless route_options[:action].nil?
61
+
62
+ code
63
+ end
64
+
65
+ def gem_code(gem_options)
66
+ code = "config.gem '#{gem_options[:name]}'"
67
+ code += ", :lib => '#{gem_options[:lib]}'" unless gem_options[:lib].nil?
68
+ code += ", :version => '#{gem_options[:version]}'" unless gem_options[:version].nil?
69
+ code
70
+ end
71
+
72
+ end
73
+
74
+ class Create
75
+ def route(route_options)
76
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
77
+ logger.route route_code(route_options)
78
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |m|
79
+ "#{m}\n #{route_code(route_options)}\n"
80
+ end
81
+ end
82
+
83
+ def gem(gem_options)
84
+ # Rails::Initializer.run do |config|
85
+ sentinel = 'Rails::Initializer.run do |config|'
86
+ logger.gem gem_code(gem_options)
87
+ gsub_file 'config/environment.rb', /(#{Regexp.escape(sentinel)})/mi do |m|
88
+ "#{m}\n #{gem_code(gem_options)}\n"
89
+ end
90
+ end
91
+
92
+ def route_resource(*resources)
93
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
94
+
95
+ logger.route "#{resource_route_code(resources)}"
96
+ unless options[:pretend]
97
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
98
+ "#{match}\n #{resource_route_code(resources)}\n"
99
+ end
100
+ end
101
+ end
102
+ end
103
+
104
+ class Destroy
105
+ def route(route_options)
106
+ logger.remove_route route_code(route_options)
107
+ to_remove = "\n #{route_code(route_options)}"
108
+ gsub_file 'config/routes.rb', /(#{to_remove})/mi, ''
109
+ end
110
+
111
+ def gem(gem_options)
112
+ logger.remove_gem gem_code(gem_options)
113
+ to_remove = "\n #{gem_code(gem_options)}"
114
+ gsub_file 'config/environment.rb', /(#{to_remove})/mi, ''
115
+ end
116
+
117
+ def route_resource(*resources)
118
+ logger.remove_route resource_route_code(resources)
119
+ to_remove = "\n #{resource_route_code(resources)}"
120
+ gsub_file 'config/routes.rb', /(#{to_remove})/mi, ''
121
+ end
122
+
123
+ end
124
+
125
+
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,46 @@
1
+ # Filters added to this controller apply to all controllers in the application.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+
4
+ class ApplicationController < ActionController::Base
5
+ helper :all
6
+ helper_method :current_user_session, :current_user
7
+ filter_parameter_logging :password, :password_confirmation
8
+
9
+ private
10
+ def current_user_session
11
+ return @current_user_session if defined?(@current_user_session)
12
+ @current_user_session = UserSession.find
13
+ end
14
+
15
+ def current_user
16
+ return @current_user if defined?(@current_user)
17
+ @current_user = current_user_session && current_user_session.record
18
+ end
19
+
20
+ def require_user
21
+ unless current_user
22
+ store_location
23
+ flash[:notice] = "You must be logged in to access this page"
24
+ redirect_to new_user_session_url
25
+ return false
26
+ end
27
+ end
28
+
29
+ def require_no_user
30
+ if current_user
31
+ store_location
32
+ flash[:notice] = "You must be logged out to access this page"
33
+ redirect_to account_url
34
+ return false
35
+ end
36
+ end
37
+
38
+ def store_location
39
+ session[:return_to] = request.request_uri
40
+ end
41
+
42
+ def redirect_back_or_default(default)
43
+ redirect_to(session[:return_to] || default)
44
+ session[:return_to] = nil
45
+ end
46
+ end
@@ -0,0 +1,30 @@
1
+ class CreateAuthlogicUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :login
5
+ t.string :email
6
+ t.string :crypted_password
7
+ t.string :password_salt
8
+ t.string :persistence_token
9
+ t.string :single_access_token
10
+ t.string :perishable_token
11
+ t.integer :login_count
12
+ t.integer :failed_login_count
13
+ t.datetime :last_request_at
14
+ t.datetime :current_login_at
15
+ t.datetime :last_login_at
16
+ t.string :current_login_ip
17
+ t.string :last_login_ip
18
+
19
+ t.timestamps
20
+ end
21
+
22
+ add_index :users, :login
23
+ add_index :users, :email
24
+ add_index :users, :crypted_password
25
+ end
26
+
27
+ def self.down
28
+ drop_table :users
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ class User < ActiveRecord::Base
2
+ acts_as_authentic
3
+ end
@@ -0,0 +1,2 @@
1
+ class UserSession < Authlogic::Session::Base
2
+ end
@@ -0,0 +1,24 @@
1
+ class UserSessionsController < ApplicationController
2
+ before_filter :require_no_user, :only => [:new, :create]
3
+ before_filter :require_user, :only => :destroy
4
+
5
+ def new
6
+ @user_session = UserSession.new
7
+ end
8
+
9
+ def create
10
+ @user_session = UserSession.new(params[:user_session])
11
+ if @user_session.save
12
+ flash[:notice] = "Login successful!"
13
+ redirect_back_or_default messages_url
14
+ else
15
+ render :action => :new
16
+ end
17
+ end
18
+
19
+ def destroy
20
+ current_user_session.destroy
21
+ flash[:notice] = "Logout successful!"
22
+ redirect_back_or_default new_user_session_url
23
+ end
24
+ end
@@ -0,0 +1,40 @@
1
+ class UsersController < ApplicationController
2
+ before_filter :require_no_user, :only => [:new, :create]
3
+ before_filter :require_user, :only => [:show, :edit, :update]
4
+ before_filter :load_user, :only => [:show, :edit]
5
+
6
+ def new
7
+ @user = User.new
8
+ end
9
+
10
+ def create
11
+ @user = User.new(params[:user])
12
+ if @user.save
13
+ flash[:notice] = "Account registered!"
14
+ redirect_back_or_default account_url
15
+ else
16
+ render :action => :new
17
+ end
18
+ end
19
+
20
+ def show
21
+ end
22
+
23
+ def edit
24
+ end
25
+
26
+ def update
27
+ if @user.update_attributes(params[:user])
28
+ flash[:notice] = "Account updated!"
29
+ redirect_to account_url
30
+ else
31
+ render :action => :edit
32
+ end
33
+ end
34
+
35
+ protected
36
+
37
+ def load_user
38
+ @user = @current_user
39
+ end
40
+ end