brute_squad 0.0.0
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/.gitignore +2 -0
- data/README.rdoc +26 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/generators/brute_squad/USAGE +8 -0
- data/generators/brute_squad/brute_squad_generator.rb +17 -0
- data/generators/brute_squad/templates/brute_squad.rb +4 -0
- data/lib/brute_squad.rb +16 -0
- data/lib/brute_squad/model.rb +32 -0
- data/lib/tasks/brute_squad_tasks.rake +4 -0
- data/rails/init.rb +1 -0
- data/spec/brute_squad/model_spec.rb +61 -0
- data/spec/brute_squad_spec.rb +1 -0
- data/spec/debug.log +1 -0
- data/spec/spec_helper.rb +10 -0
- data/uninstall.rb +1 -0
- metadata +79 -0
data/.gitignore
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
== Brute Squad
|
2
|
+
|
3
|
+
MIRACLE MAX:: "Get away, I'm telling you, or I call the Brute Squad."
|
4
|
+
FEZZIK:: "I'm on the Brute Squad."
|
5
|
+
MIRACLE MAX:: "You _are_ the brute squad."
|
6
|
+
|
7
|
+
I'm kind of sick of Rails authentication stacks that try to be all things to all people,
|
8
|
+
except in one little area where their authors are stubborn and opinionated.
|
9
|
+
|
10
|
+
So I thought I'd build another one.
|
11
|
+
|
12
|
+
=== Goals
|
13
|
+
|
14
|
+
* Works out of the box
|
15
|
+
* ...with Rails 2 *and* 3
|
16
|
+
* ...and any ORM (within reason)
|
17
|
+
* ...as modularly and unobtrusively as possible
|
18
|
+
|
19
|
+
=== Ungoals
|
20
|
+
|
21
|
+
* Flexibility for flexibility's sake
|
22
|
+
* Endless configuration options
|
23
|
+
* Stuff that isn't specifically authentication (e.g. user management)
|
24
|
+
|
25
|
+
Copyright (c) 2010 Matt Powell, released under the MIT license.
|
26
|
+
Don't be a dick.
|
data/Rakefile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'spec/rake/spectask'
|
4
|
+
|
5
|
+
desc 'Default: run specs.'
|
6
|
+
task :default => :spec
|
7
|
+
|
8
|
+
desc 'Run the specs'
|
9
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
10
|
+
t.spec_opts = ['--colour --format progress --loadby mtime --reverse']
|
11
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
12
|
+
t.rcov = true
|
13
|
+
t.rcov_opts = ['--text-report --rails --exclude "spec/*"']
|
14
|
+
end
|
15
|
+
|
16
|
+
begin
|
17
|
+
require 'jeweler'
|
18
|
+
Jeweler::Tasks.new do |gemspec|
|
19
|
+
gemspec.name = "brute_squad"
|
20
|
+
gemspec.summary = "No-bullshit authentication for Rails"
|
21
|
+
gemspec.description = "Sick of authentication frameworks with all the sauces? Me too."
|
22
|
+
gemspec.email = "fauxparse@gmail.com"
|
23
|
+
gemspec.homepage = "http://github.com/fauxparse/brute_squad"
|
24
|
+
gemspec.authors = ["Matt Powell"]
|
25
|
+
end
|
26
|
+
Jeweler::GemcutterTasks.new
|
27
|
+
rescue LoadError
|
28
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
29
|
+
end
|
30
|
+
|
31
|
+
begin
|
32
|
+
require 'hanna/rdoctask'
|
33
|
+
rescue
|
34
|
+
require 'rake/rdoctask'
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'Generate RDoc documentation.'
|
38
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
39
|
+
rdoc.rdoc_files.include('README.rdoc').
|
40
|
+
include('lib/**/*.rb')
|
41
|
+
|
42
|
+
rdoc.main = "README.rdoc" # page to start on
|
43
|
+
rdoc.title = "Brute Squad"
|
44
|
+
|
45
|
+
rdoc.rdoc_dir = 'doc' # rdoc output folder
|
46
|
+
rdoc.options << '--webcvs=http://github.com/fauxparse/credentials/'
|
47
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.0
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class BruteSquadGenerator < Rails::Generator::NamedBase
|
2
|
+
attr_reader :model_name
|
3
|
+
|
4
|
+
def initialize(runtime_args, runtime_options = {})
|
5
|
+
runtime_args << "user" if runtime_args.empty?
|
6
|
+
|
7
|
+
super
|
8
|
+
|
9
|
+
@model_name = File.basename(plural_name)
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
record do |m|
|
14
|
+
m.template "brute_squad.rb", "config/initializers/brute_squad.rb"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/brute_squad.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module BruteSquad
|
2
|
+
def self.models
|
3
|
+
@models ||= {}
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.configure(model, options = {}, &block)
|
7
|
+
returning configuration_for(model, options) do |config|
|
8
|
+
config.instance_eval &block if block_given?
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
def self.configuration_for(model, options = {})
|
14
|
+
models[model.to_sym] ||= Model.new(model, options)
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module BruteSquad
|
2
|
+
class Model
|
3
|
+
attr_reader :name
|
4
|
+
attr_accessor :singular, :class_name
|
5
|
+
|
6
|
+
# Configure a new model for use with BruteSquad
|
7
|
+
#
|
8
|
+
# Accepts the following options:
|
9
|
+
# :singular:: Singular name for the model
|
10
|
+
# :class_name:: Class name of the model to use
|
11
|
+
def initialize(model_name, options = {})
|
12
|
+
@name = model_name
|
13
|
+
@singular = options[:singular] if options[:singular].present?
|
14
|
+
@class_name = options[:class_name] if options[:class_name].present?
|
15
|
+
end
|
16
|
+
|
17
|
+
def singular(value = nil)
|
18
|
+
@singular = value unless value.nil?
|
19
|
+
@singular || name.to_s.singularize.to_sym
|
20
|
+
end
|
21
|
+
|
22
|
+
def class_name(value = nil)
|
23
|
+
@class_name = value unless value.nil?
|
24
|
+
@class_name || singular.to_s.classify
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
def klass #:nodoc:
|
29
|
+
@class_name.constantize
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Include hook code here
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe BruteSquad::Model do
|
4
|
+
before :each do
|
5
|
+
BruteSquad.models.clear
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "created with defaults" do
|
9
|
+
before :each do
|
10
|
+
@model = BruteSquad.configure(:users)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have sensible values" do
|
14
|
+
@model.name.should == :users
|
15
|
+
@model.singular.should == :user
|
16
|
+
@model.class_name.should == "User"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be listed in BruteSquad.models" do
|
20
|
+
BruteSquad.models.should == { :users => @model }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "created with options" do
|
25
|
+
it "should accept the :singular option" do
|
26
|
+
@model = BruteSquad.configure(:users, :singular => :person)
|
27
|
+
@model.name.should == :users
|
28
|
+
@model.singular.should == :person
|
29
|
+
@model.class_name.should == "Person"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should accept the :class_name option" do
|
33
|
+
@model = BruteSquad.configure(:users, :class_name => "Person")
|
34
|
+
@model.name.should == :users
|
35
|
+
@model.singular.should == :user
|
36
|
+
@model.class_name.should == "Person"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "created with a configuration block" do
|
41
|
+
it "should accept the :singular option" do
|
42
|
+
BruteSquad.configure :users do
|
43
|
+
singular :person
|
44
|
+
end
|
45
|
+
@model = BruteSquad.models[:users]
|
46
|
+
@model.name.should == :users
|
47
|
+
@model.singular.should == :person
|
48
|
+
@model.class_name.should == "Person"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should accept the :class_name option" do
|
52
|
+
BruteSquad.configure :users do
|
53
|
+
class_name "Person"
|
54
|
+
end
|
55
|
+
@model = BruteSquad.models[:users]
|
56
|
+
@model.name.should == :users
|
57
|
+
@model.singular.should == :user
|
58
|
+
@model.class_name.should == "Person"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
data/spec/debug.log
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Logfile created on Thu Apr 08 11:12:57 +1200 2010 by logger.rb/22285
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
begin
|
2
|
+
require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
|
3
|
+
rescue LoadError
|
4
|
+
puts "You need to install rspec in your base app"
|
5
|
+
exit
|
6
|
+
end
|
7
|
+
|
8
|
+
plugin_spec_dir = File.dirname(__FILE__)
|
9
|
+
ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
|
10
|
+
|
data/uninstall.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Uninstall hook code here
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brute_squad
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 0.0.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Matt Powell
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-04-08 00:00:00 +12:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Sick of authentication frameworks with all the sauces? Me too.
|
22
|
+
email: fauxparse@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- README.rdoc
|
29
|
+
files:
|
30
|
+
- .gitignore
|
31
|
+
- README.rdoc
|
32
|
+
- Rakefile
|
33
|
+
- VERSION
|
34
|
+
- generators/brute_squad/USAGE
|
35
|
+
- generators/brute_squad/brute_squad_generator.rb
|
36
|
+
- generators/brute_squad/templates/brute_squad.rb
|
37
|
+
- lib/brute_squad.rb
|
38
|
+
- lib/brute_squad/model.rb
|
39
|
+
- lib/tasks/brute_squad_tasks.rake
|
40
|
+
- rails/init.rb
|
41
|
+
- spec/brute_squad/model_spec.rb
|
42
|
+
- spec/brute_squad_spec.rb
|
43
|
+
- spec/debug.log
|
44
|
+
- spec/spec_helper.rb
|
45
|
+
- uninstall.rb
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: http://github.com/fauxparse/brute_squad
|
48
|
+
licenses: []
|
49
|
+
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options:
|
52
|
+
- --charset=UTF-8
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
version: "0"
|
69
|
+
requirements: []
|
70
|
+
|
71
|
+
rubyforge_project:
|
72
|
+
rubygems_version: 1.3.6
|
73
|
+
signing_key:
|
74
|
+
specification_version: 3
|
75
|
+
summary: No-bullshit authentication for Rails
|
76
|
+
test_files:
|
77
|
+
- spec/brute_squad/model_spec.rb
|
78
|
+
- spec/brute_squad_spec.rb
|
79
|
+
- spec/spec_helper.rb
|