bitfields 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,7 +21,7 @@ e.g. 3 = 1->true 2->true 4->false, 4 = 1->false 2->false 4->true, 5 = 1->true 2-
21
21
  Install
22
22
  =======
23
23
  As Gem: ` sudo gem install bitfields `
24
- Or as Rails plugin: ` script/plugins install git://github.com/grosser/bitfields.git `
24
+ Or as Rails plugin: ` script/plugin install git://github.com/grosser/bitfields.git `
25
25
 
26
26
  ### Migration
27
27
  ALWAYS set a default, bitfield queries will not work for NULL
@@ -29,17 +29,16 @@ ALWAYS set a default, bitfield queries will not work for NULL
29
29
  OR
30
30
  add_column :users, :my_bits, :integer, :default => 0, :null => false
31
31
 
32
- Usage
33
- =====
34
-
35
- # update all users
32
+ Examples
33
+ ========
34
+ Update all users
36
35
  User.seller.not_stupid.update_all(User.set_bitfield_sql(:seller => true, :insane => true))
37
36
 
38
- # delete the shop when a user is no longer a seller
37
+ Delete the shop when a user is no longer a seller
39
38
  before_save :delete_shop, :if => lambda{|u| u.changes['seller'] == [true, false]}
40
39
 
41
40
  Author
42
41
  ======
43
42
  [Michael Grosser](http://pragmatig.wordpress.com)
44
43
  grosser.michael@gmail.com
45
- Hereby placed under public domain, do what you want, just do not hold me accountable...
44
+ Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.2
@@ -0,0 +1,48 @@
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{bitfields}
8
+ s.version = "0.1.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael Grosser"]
12
+ s.date = %q{2010-03-06}
13
+ s.email = %q{grosser.michael@gmail.com}
14
+ s.extra_rdoc_files = [
15
+ "README.markdown"
16
+ ]
17
+ s.files = [
18
+ "README.markdown",
19
+ "Rakefile",
20
+ "VERSION",
21
+ "bitfields.gemspec",
22
+ "lib/bitfields.rb",
23
+ "spec/bitfields_spec.rb",
24
+ "spec/database.rb",
25
+ "spec/spec_helper.rb"
26
+ ]
27
+ s.homepage = %q{http://github.com/grosser/bitfields}
28
+ s.rdoc_options = ["--charset=UTF-8"]
29
+ s.require_paths = ["lib"]
30
+ s.rubygems_version = %q{1.3.6}
31
+ s.summary = %q{Save migrations and columns by storing multiple booleans in a single integer.}
32
+ s.test_files = [
33
+ "spec/spec_helper.rb",
34
+ "spec/bitfields_spec.rb",
35
+ "spec/database.rb"
36
+ ]
37
+
38
+ if s.respond_to? :specification_version then
39
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
40
+ s.specification_version = 3
41
+
42
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
43
+ else
44
+ end
45
+ else
46
+ end
47
+ end
48
+
@@ -11,7 +11,8 @@ module Bitfields
11
11
 
12
12
  def self.extract_bits(options)
13
13
  bitfields = {}
14
- options.keys.select{|key| key.is_a?(Numeric) }.each do |bit|
14
+ options.keys.select{|key| key.is_a?(Fixnum) }.each do |bit|
15
+ raise "#{bit} is not a power of 2 !!" unless bit.to_s(2).scan('1').size == 1
15
16
  bit_name = options.delete(bit).to_sym
16
17
  bitfields[bit_name] = bit
17
18
  end
@@ -36,7 +37,7 @@ module Bitfields
36
37
  define_method("#{bit_name}?"){ bitfield_value(bit_name) }
37
38
  define_method("#{bit_name}="){|value| set_bitfield_value(bit_name, value) }
38
39
  if options[:scopes] != false
39
- scoping_method = (respond_to?(:scope) ? :scope : :named_scope) # AR 3.0+ uses scope
40
+ scoping_method = (respond_to?(:named_scope) ? :named_scope : :scope) # AR 3.0+ uses scope
40
41
  send scoping_method, bit_name, :conditions => bitfield_sql(bit_name => true)
41
42
  send scoping_method, "not_#{bit_name}", :conditions => bitfield_sql(bit_name => false)
42
43
  end
@@ -136,4 +137,4 @@ module Bitfields
136
137
  ]
137
138
  end
138
139
  end
139
- end
140
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Michael Grosser
@@ -30,6 +30,7 @@ files:
30
30
  - README.markdown
31
31
  - Rakefile
32
32
  - VERSION
33
+ - bitfields.gemspec
33
34
  - lib/bitfields.rb
34
35
  - spec/bitfields_spec.rb
35
36
  - spec/database.rb