blazy 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +12 -17
- data/Rakefile +12 -23
- data/lib/blazy.rb +6 -2
- data/lib/extensions/active_record.rb +1 -7
- data/lib/extensions/active_record/column_scope.rb +2 -2
- data/lib/extensions/active_record/fixnum.rb +1 -1
- data/lib/extensions/active_record/object.rb +1 -1
- data/lib/extensions/rails.rb +12 -0
- metadata +15 -22
- data/lib/extensions/active_record/scope_merge.rb +0 -11
data/README.rdoc
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
== Description
|
2
2
|
|
3
|
-
Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in
|
3
|
+
Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in rails console.
|
4
4
|
|
5
|
-
|
5
|
+
For rails 2.x refer to v0.1.2[https://github.com/endeepak/blazy/tree/v0.1.2]
|
6
6
|
|
7
7
|
== Install
|
8
8
|
|
@@ -10,15 +10,19 @@ Currently works with rails 2.2.x and 2.3.x
|
|
10
10
|
|
11
11
|
== Usage
|
12
12
|
|
13
|
-
|
13
|
+
Add dependency in gem file
|
14
14
|
|
15
|
-
|
15
|
+
gem 'blazy', :group => :development
|
16
|
+
|
17
|
+
Go to rails console in your rails project and type
|
18
|
+
|
19
|
+
Blazy.init
|
16
20
|
|
17
21
|
you are ready to go!!
|
18
22
|
|
19
23
|
== How does it help me?
|
20
24
|
|
21
|
-
Most of the operations we do in
|
25
|
+
Most of the operations we do in rails console while debugging a problem or looking for model values in database take a lot of key strokes. Blazy provides methods, aliases and a fluent interface to reduce the number of keystrokes to bare minimal.
|
22
26
|
|
23
27
|
== Examples
|
24
28
|
Lets say you have a active record model called Project.
|
@@ -36,20 +40,11 @@ When you want to see some subset of data
|
|
36
40
|
|
37
41
|
Scopes generated for each column
|
38
42
|
|
39
|
-
Project.
|
40
|
-
|
41
|
-
And its fluency using named scope (more like rails 3 way)
|
42
|
-
|
43
|
-
Project.all(:conditions =>....) --> Project.where(..) or Project.with()
|
44
|
-
Project.all(:limit => 10) --> Project.limit(10)
|
45
|
-
Project.all(:order => 'name DESC') --> Project.order('name DESC')
|
46
|
-
Project.all(:select => 'name') --> Project.select('name')
|
47
|
-
Project.all(:conditions => ["name like '%lazy'"]) --> Project.where("name like '%lazy'") #can also use 'with' instead of 'where'
|
48
|
-
|
49
|
-
And the power comes by chaining them
|
43
|
+
Project.where(:name => 'blazy') --> Project.with_name('blazy') # you get autocomplete for this
|
50
44
|
|
51
|
-
|
45
|
+
And chaining them
|
52
46
|
|
47
|
+
10.projects.where('priority < 2').order(:priority)
|
53
48
|
Project.with_priority(1).limit 10
|
54
49
|
|
55
50
|
Lastly and actually the least some aliases. These are useful at the end of scope to inspect a model
|
data/Rakefile
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "rake/gempackagetask"
|
3
3
|
require "rake/rdoctask"
|
4
|
-
require "
|
5
|
-
require "
|
4
|
+
require "rspec"
|
5
|
+
require "rspec/core/rake_task"
|
6
6
|
|
7
|
-
|
8
|
-
t.
|
9
|
-
t.
|
7
|
+
RSpec::Core::RakeTask.new do |t|
|
8
|
+
t.rspec_opts = %w(--format documentation --color)
|
9
|
+
t.pattern = 'spec/**/*_spec.rb'
|
10
10
|
end
|
11
11
|
|
12
12
|
task :default => ["spec"]
|
13
13
|
|
14
14
|
spec = Gem::Specification.new do |s|
|
15
15
|
s.name = "blazy"
|
16
|
-
s.version = "0.1.
|
16
|
+
s.version = "0.1.3"
|
17
17
|
s.summary = "Provides fluent extensions and aliases to active record models"
|
18
|
-
s.description = "Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in
|
18
|
+
s.description = "Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in rails console"
|
19
19
|
s.author = "Deepak N"
|
20
20
|
s.email = "endeep123@gmail.com"
|
21
21
|
s.homepage = "http://github.com/endeepak/blazy"
|
@@ -24,10 +24,10 @@ spec = Gem::Specification.new do |s|
|
|
24
24
|
s.rdoc_options = %w(--main README.rdoc)
|
25
25
|
s.files = %w(Rakefile README.rdoc) + Dir.glob("{spec,lib/**/*}")
|
26
26
|
s.require_paths = ["lib"]
|
27
|
-
s.add_development_dependency('rspec', '= 1.
|
28
|
-
s.add_development_dependency('activerecord', '=
|
29
|
-
s.add_development_dependency('active_support', '=
|
30
|
-
s.add_development_dependency('factory_girl', '= 1.2
|
27
|
+
s.add_development_dependency('rspec', '= 2.1.0')
|
28
|
+
s.add_development_dependency('activerecord', '= 3.0.1')
|
29
|
+
s.add_development_dependency('active_support', '= 3.0.1')
|
30
|
+
s.add_development_dependency('factory_girl', '= 1.3.2')
|
31
31
|
end
|
32
32
|
|
33
33
|
Rake::GemPackageTask.new(spec) do |pkg|
|
@@ -61,15 +61,4 @@ end
|
|
61
61
|
desc 'Clear out RDoc and generated packages'
|
62
62
|
task :clean => [:clobber_rdoc, :clobber_package] do
|
63
63
|
rm "#{spec.name}.gemspec"
|
64
|
-
end
|
65
|
-
|
66
|
-
namespace :db do
|
67
|
-
namespace :mysql do
|
68
|
-
desc 'Recreates test database in mysql server'
|
69
|
-
task :recreate do
|
70
|
-
`mysql -uroot -e "drop database if exists blazy_test"`
|
71
|
-
`mysql -uroot -e "create database if not exists blazy_test"`
|
72
|
-
`mysql -uroot -D blazy_test -e "show tables"`
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
64
|
+
end
|
data/lib/blazy.rb
CHANGED
@@ -4,6 +4,10 @@ require 'active_support/inflector'
|
|
4
4
|
|
5
5
|
require 'extensions/object'
|
6
6
|
require 'extensions/active_record'
|
7
|
+
require 'extensions/rails'
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
module Blazy
|
10
|
+
def self.init
|
11
|
+
Rails.load_all_models
|
12
|
+
end
|
13
|
+
end
|
@@ -1,18 +1,12 @@
|
|
1
1
|
class ActiveRecord::Base
|
2
|
-
named_scope :with, lambda { |conditions| {:conditions => conditions } }
|
3
|
-
named_scope :limit, lambda { |limit| {:limit => limit} }
|
4
|
-
named_scope :order, lambda { |order| {:order => order} }
|
5
|
-
named_scope :select, lambda { |*columns| {:select => columns} }
|
6
|
-
|
7
2
|
class << self
|
8
|
-
{
|
3
|
+
{:- => :find, :[] => :find, :f => :first, :a => :all, :l => :last}.each do |new_name, method|
|
9
4
|
eval "alias #{new_name} #{method}"
|
10
5
|
end
|
11
6
|
end
|
12
7
|
end
|
13
8
|
|
14
9
|
Dir.glob(File.join(File.dirname(__FILE__),'active_record','*.rb')).each { |file| require file }
|
15
|
-
ActiveRecord::Base.send(:include, Blazy::Extensions::ActiveRecord::ScopeMerge)
|
16
10
|
ActiveRecord::Base.send(:include, Blazy::Extensions::ActiveRecord::Object)
|
17
11
|
ActiveRecord::Base.send(:include, Blazy::Extensions::ActiveRecord::Fixnum)
|
18
12
|
ActiveRecord::Base.send(:include, Blazy::Extensions::ActiveRecord::ColumnScope)
|
@@ -4,7 +4,7 @@ module Blazy
|
|
4
4
|
module ColumnScope
|
5
5
|
def self.included(klass)
|
6
6
|
klass.extend ClassMethods
|
7
|
-
klass.send(:
|
7
|
+
klass.send(:descendants).each {|subclass| subclass.add_column_scope unless subclass.abstract_class?}
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
@@ -15,7 +15,7 @@ module Blazy
|
|
15
15
|
|
16
16
|
def add_column_scope
|
17
17
|
self.columns.each do |column|
|
18
|
-
self.
|
18
|
+
self.scope "with_#{column.name}", lambda { |*params| {:conditions => { column.name => params } } }
|
19
19
|
end
|
20
20
|
rescue ::ActiveRecord::ActiveRecordError => e
|
21
21
|
puts "Failed to add column scope for #{self.name} : #{e.message}"
|
@@ -4,7 +4,7 @@ module Blazy
|
|
4
4
|
module Fixnum
|
5
5
|
def self.included(klass)
|
6
6
|
klass.extend ClassMethods
|
7
|
-
klass.send(:
|
7
|
+
klass.send(:descendants).each {|subclass| subclass.add_extension_to_fixnum}
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
@@ -4,7 +4,7 @@ module Blazy
|
|
4
4
|
module Object
|
5
5
|
def self.included(klass)
|
6
6
|
klass.extend ClassMethods
|
7
|
-
klass.send(:
|
7
|
+
klass.send(:descendants).each {|subclass| subclass.add_extension_to_object}
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Rails
|
2
|
+
#HACKTAG:: Load all model from rails app model instead of lazy load - Testing this?
|
3
|
+
def self.load_all_models
|
4
|
+
return false unless Rails.root
|
5
|
+
load_all('app','models','**','*.rb') and return true
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
def self.load_all(*paths)
|
10
|
+
Dir.glob(File.join(self.root,*paths)).each { |file| require_dependency file }
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blazy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 31
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Deepak N
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-11-22 00:00:00 +05:30
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,12 +25,11 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - "="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 27
|
30
28
|
segments:
|
29
|
+
- 2
|
31
30
|
- 1
|
32
|
-
- 3
|
33
31
|
- 0
|
34
|
-
version: 1.
|
32
|
+
version: 2.1.0
|
35
33
|
type: :development
|
36
34
|
version_requirements: *id001
|
37
35
|
- !ruby/object:Gem::Dependency
|
@@ -42,12 +40,11 @@ dependencies:
|
|
42
40
|
requirements:
|
43
41
|
- - "="
|
44
42
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 9
|
46
43
|
segments:
|
47
|
-
- 2
|
48
44
|
- 3
|
49
|
-
-
|
50
|
-
|
45
|
+
- 0
|
46
|
+
- 1
|
47
|
+
version: 3.0.1
|
51
48
|
type: :development
|
52
49
|
version_requirements: *id002
|
53
50
|
- !ruby/object:Gem::Dependency
|
@@ -58,12 +55,11 @@ dependencies:
|
|
58
55
|
requirements:
|
59
56
|
- - "="
|
60
57
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 9
|
62
58
|
segments:
|
63
|
-
- 2
|
64
59
|
- 3
|
65
|
-
-
|
66
|
-
|
60
|
+
- 0
|
61
|
+
- 1
|
62
|
+
version: 3.0.1
|
67
63
|
type: :development
|
68
64
|
version_requirements: *id003
|
69
65
|
- !ruby/object:Gem::Dependency
|
@@ -74,15 +70,14 @@ dependencies:
|
|
74
70
|
requirements:
|
75
71
|
- - "="
|
76
72
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 23
|
78
73
|
segments:
|
79
74
|
- 1
|
75
|
+
- 3
|
80
76
|
- 2
|
81
|
-
|
82
|
-
version: 1.2.4
|
77
|
+
version: 1.3.2
|
83
78
|
type: :development
|
84
79
|
version_requirements: *id004
|
85
|
-
description: Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in
|
80
|
+
description: Blazy(be lazy) is a fluent extension to active record models to reduce number of key strokes in rails console
|
86
81
|
email: endeep123@gmail.com
|
87
82
|
executables: []
|
88
83
|
|
@@ -97,10 +92,10 @@ files:
|
|
97
92
|
- lib/extensions/active_record/column_scope.rb
|
98
93
|
- lib/extensions/active_record/fixnum.rb
|
99
94
|
- lib/extensions/active_record/object.rb
|
100
|
-
- lib/extensions/active_record/scope_merge.rb
|
101
95
|
- lib/extensions/active_record.rb
|
102
96
|
- lib/extensions/object/name.rb
|
103
97
|
- lib/extensions/object.rb
|
98
|
+
- lib/extensions/rails.rb
|
104
99
|
has_rdoc: true
|
105
100
|
homepage: http://github.com/endeepak/blazy
|
106
101
|
licenses: []
|
@@ -116,7 +111,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
111
|
requirements:
|
117
112
|
- - ">="
|
118
113
|
- !ruby/object:Gem::Version
|
119
|
-
hash: 3
|
120
114
|
segments:
|
121
115
|
- 0
|
122
116
|
version: "0"
|
@@ -125,7 +119,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
119
|
requirements:
|
126
120
|
- - ">="
|
127
121
|
- !ruby/object:Gem::Version
|
128
|
-
hash: 3
|
129
122
|
segments:
|
130
123
|
- 0
|
131
124
|
version: "0"
|