static_model 0.2.2 → 0.2.3

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 ADDED
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ pkg/*
3
+ doc/*
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.2.3 2009-12-03
2
+
3
+ * Fixed active_support dependency
4
+ * Switched to jeweler
5
+ * Tested against Ruby 1.9.1
6
+
1
7
  == 0.2.2 2008-12-07
2
8
 
3
9
  * 1 minor enhancements
data/README.rdoc CHANGED
@@ -27,6 +27,11 @@ The source is at github:
27
27
 
28
28
  http://github.com/quirkey/static_model/
29
29
 
30
+ == CONTRIBUTERS
31
+
32
+ Aaron Quint (quirkey)
33
+ Michael Bernstein (mrb)
34
+
30
35
  == LICENSE:
31
36
 
32
37
  (The MIT License)
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ %w[rubygems rake rake/clean rake/testtask fileutils].each { |f| require f }
2
+ require File.dirname(__FILE__) + '/lib/static_model'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |s|
7
+ s.name = %q{static_model}
8
+ s.version = StaticModel::VERSION
9
+ s.authors = ["Aaron Quint"]
10
+ s.date = %q{2009-12-03}
11
+ s.summary = 'ActiveRecord like functionalities for reading from YAML with a simple class implementation'
12
+ s.description = %q{StaticModel provides a Base class much like ActiveRecord which supports reading from a YAML file and basic associations to ActiveRecord}
13
+ s.rubyforge_project = %q{quirkey}
14
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.2.0"])
15
+ s.add_runtime_dependency(%q<rubigen>, [">= 1.5.1"])
16
+ s.add_development_dependency(%q<Shoulda>, [">= 1.2.0"])
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
21
+ end
22
+
23
+ Rake::TestTask.new do |t|
24
+ t.libs << "test"
25
+ t.test_files = FileList['test/test*.rb']
26
+ t.verbose = true
27
+ end
28
+
29
+ Dir['tasks/**/*.rake'].each { |t| load t }
30
+
31
+ task :default => :test
data/index.html ADDED
@@ -0,0 +1,80 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+
8
+ <title>quirkey/static_model @ GitHub</title>
9
+
10
+ <style type="text/css">
11
+ body {
12
+ margin-top: 1.0em;
13
+ background-color: #65b1bc;
14
+ font-family: "helvetica";
15
+ color: #000000;
16
+ }
17
+ #container {
18
+ margin: 0 auto;
19
+ width: 700px;
20
+ }
21
+ h1 { font-size: 3.8em; color: #9a4e43; margin-bottom: 3px; }
22
+ h1 .small { font-size: 0.4em; }
23
+ h1 a { text-decoration: none }
24
+ h2 { font-size: 1.5em; color: #9a4e43; }
25
+ h3 { text-align: center; color: #9a4e43; }
26
+ a { color: #9a4e43; }
27
+ .description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
28
+ .download { float: right; }
29
+ pre { background: #000; color: #fff; padding: 15px;}
30
+ hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
31
+ .footer { text-align:center; padding-top:30px; font-style: italic; }
32
+ </style>
33
+
34
+ </head>
35
+
36
+ <body>
37
+ <a href="http://github.com/quirkey/static_model"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
38
+
39
+ <div id="container">
40
+
41
+ <div class="download">
42
+ <a href="http://github.com/quirkey/static_model/zipball/master">
43
+ <img border="0" width="90" src="http://github.com/images/modules/download/zip.png"></a>
44
+ <a href="http://github.com/quirkey/static_model/tarball/master">
45
+ <img border="0" width="90" src="http://github.com/images/modules/download/tar.png"></a>
46
+ </div>
47
+
48
+ <h1><a href="http://github.com/quirkey/static_model">static_model</a>
49
+ <span class="small">by <a href="http://github.com/quirkey">quirkey</a></small></h1>
50
+
51
+ <div class="description">
52
+ ActiveRecord like functionalities for reading from YAML with a simple class implementation
53
+ </div>
54
+
55
+ <h2>Authors</h2>
56
+ <p>Aaron Quint (aaron@quirkey.com)
57
+ <h2>Contact</h2>
58
+ <p>Aaron Quint (aaron@quirkey.com)
59
+
60
+
61
+ <h2>Download</h2>
62
+ <p>
63
+ You can download this project in either
64
+ <a href="http://github.com/quirkey/static_model/zipball/master">zip</a> or
65
+ <a href="http://github.com/quirkey/static_model/tarball/master">tar</a> formats.
66
+ </p>
67
+ <p>You can also clone the project with <a href="http://git-scm.com">Git</a>
68
+ by running:
69
+ <pre>$ git clone git://github.com/quirkey/static_model</pre>
70
+ </p>
71
+
72
+ <div class="footer">
73
+ get the source code on GitHub : <a href="http://github.com/quirkey/static_model">quirkey/static_model</a>
74
+ </div>
75
+
76
+ </div>
77
+
78
+
79
+ </body>
80
+ </html>
@@ -63,6 +63,11 @@ module StaticModel
63
63
  records[0]
64
64
  end
65
65
  alias_method :first, :find_first
66
+
67
+ def find_last
68
+ records[records.length-1]
69
+ end
70
+ alias_method :last, :find_last
66
71
 
67
72
  def find_all_by(attribute, value)
68
73
  records.find_all {|r| r.send(attribute) == value }
@@ -72,6 +77,11 @@ module StaticModel
72
77
  records.find {|r| r.send(attribute) == value }
73
78
  end
74
79
  alias_method :find_by, :find_first_by
80
+
81
+ def find_last_by(attribute, value)
82
+ records.find {|r| r.send(attribute) == value }
83
+ end
84
+ alias_method :find_by, :find_last_by
75
85
 
76
86
  def load(reload = false)
77
87
  return if loaded? && !reload
@@ -153,8 +163,8 @@ module StaticModel
153
163
  private
154
164
  def method_missing(meth, *args)
155
165
  meth_name = meth.to_s
156
- if meth_name =~ /^find_(all_by|first_by|by)_(.+)/
157
- attribute_name = meth_name.gsub(/^find_(all_by|first_by|by)_/, '')
166
+ if meth_name =~ /^find_(all_by|first_by|last_by|by)_(.+)/
167
+ attribute_name = meth_name.gsub(/^find_(all_by|first_by|last_by|by)_/, '')
158
168
  finder = meth_name.gsub(/_#{attribute_name}/, '')
159
169
  return self.send(finder, attribute_name, *args)
160
170
  elsif class_attributes.has_key? meth_name
data/lib/static_model.rb CHANGED
@@ -4,11 +4,10 @@ $:.unshift(File.dirname(__FILE__)) unless
4
4
  require 'yaml' unless defined?(YAML)
5
5
  require 'erb' unless defined?(ERB)
6
6
 
7
- unless defined?(ActiveSupport::CoreExtensions)
8
- require 'active_support/inflector'
9
- require 'active_support/core_ext/hash'
10
- require 'active_support/core_ext/string'
11
- require 'active_support/core_ext/integer'
7
+ require 'active_support'
8
+
9
+ module StaticModel
10
+ VERSION = '0.2.3'
12
11
  end
13
12
 
14
13
  require 'static_model/errors'
@@ -16,4 +15,5 @@ require 'static_model/associations'
16
15
  require 'static_model/active_record'
17
16
  require 'static_model/comparable'
18
17
  require 'static_model/base'
19
- require 'static_model/rails'
18
+ require 'static_model/rails'
19
+
@@ -0,0 +1,85 @@
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{static_model}
8
+ s.version = "0.2.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Aaron Quint"]
12
+ s.date = %q{2009-12-03}
13
+ s.description = %q{StaticModel provides a Base class much like ActiveRecord which supports reading from a YAML file and basic associations to ActiveRecord}
14
+ s.extra_rdoc_files = [
15
+ "README.rdoc"
16
+ ]
17
+ s.files = [
18
+ ".gitignore",
19
+ "History.txt",
20
+ "License.txt",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "generators/static_model/USAGE",
24
+ "generators/static_model/static_model_generator.rb",
25
+ "generators/static_model/templates/model.rb.erb",
26
+ "generators/static_model/templates/models.yml.erb",
27
+ "index.html",
28
+ "lib/static_model.rb",
29
+ "lib/static_model/active_record.rb",
30
+ "lib/static_model/associations.rb",
31
+ "lib/static_model/base.rb",
32
+ "lib/static_model/comparable.rb",
33
+ "lib/static_model/errors.rb",
34
+ "lib/static_model/rails.rb",
35
+ "lib/static_model/scope.rb",
36
+ "lib/static_model/version.rb",
37
+ "static_model.gemspec",
38
+ "test/data/authors.yml",
39
+ "test/data/books.yml",
40
+ "test/data/empty.yml",
41
+ "test/data/pages.yml",
42
+ "test/data/projects.yml",
43
+ "test/data/publishers.yml",
44
+ "test/data/stores.yml",
45
+ "test/test_generator_helper.rb",
46
+ "test/test_helper.rb",
47
+ "test/test_static_model.rb",
48
+ "test/test_static_model_associations.rb",
49
+ "test/test_static_model_generator.rb",
50
+ "test/test_static_model_scope.rb"
51
+ ]
52
+ s.rdoc_options = ["--charset=UTF-8"]
53
+ s.require_paths = ["lib"]
54
+ s.rubyforge_project = %q{quirkey}
55
+ s.rubygems_version = %q{1.3.5}
56
+ s.summary = %q{ActiveRecord like functionalities for reading from YAML with a simple class implementation}
57
+ s.test_files = [
58
+ "test/test_generator_helper.rb",
59
+ "test/test_helper.rb",
60
+ "test/test_static_model.rb",
61
+ "test/test_static_model_associations.rb",
62
+ "test/test_static_model_generator.rb",
63
+ "test/test_static_model_scope.rb"
64
+ ]
65
+
66
+ if s.respond_to? :specification_version then
67
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
68
+ s.specification_version = 3
69
+
70
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
71
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.2.0"])
72
+ s.add_runtime_dependency(%q<rubigen>, [">= 1.5.1"])
73
+ s.add_development_dependency(%q<Shoulda>, [">= 1.2.0"])
74
+ else
75
+ s.add_dependency(%q<activesupport>, [">= 2.2.0"])
76
+ s.add_dependency(%q<rubigen>, [">= 1.5.1"])
77
+ s.add_dependency(%q<Shoulda>, [">= 1.2.0"])
78
+ end
79
+ else
80
+ s.add_dependency(%q<activesupport>, [">= 2.2.0"])
81
+ s.add_dependency(%q<rubigen>, [">= 1.5.1"])
82
+ s.add_dependency(%q<Shoulda>, [">= 1.2.0"])
83
+ end
84
+ end
85
+
@@ -0,0 +1,10 @@
1
+ ---
2
+ - id: 1
3
+ publisher_id: 1
4
+ name: Michael Pollan
5
+ - id: 2
6
+ publisher_id:
7
+ name: Piers Anthony
8
+ - id: 3
9
+ publisher_id: 2
10
+ name: Chuck Palahniuk
@@ -0,0 +1,22 @@
1
+ ---
2
+ - id: 1
3
+ title: The Omnivore's Dilemma
4
+ author: Michael Pollan
5
+ author_id: 1
6
+ genre: Non-Fiction
7
+ - id: 2
8
+ title: In Defense of Food
9
+ author: Michael Pollan
10
+ author_id: 1
11
+ genre: Non-Fiction
12
+ - id: 3
13
+ title: Omnivore (Of Man and Manta)
14
+ author: Piers Anthony
15
+ author_id: 2
16
+ genre: Fantasy
17
+ - id: 4
18
+ title: Choke
19
+ author: Chuck Palahniuk
20
+ author_id: 3
21
+ genre: Humor
22
+
File without changes
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: The Best Ever
3
+ url: http://www.quirkey.com
4
+ settings:
5
+ username: test
6
+ password: test
7
+ records:
8
+ - id: 1
9
+ position: 5
10
+ title: Getting to know you
11
+ content: Getting to know all about you
12
+ - id: 2
13
+ position: 6
14
+ title: Its not me, its you
15
+ content: The oldest excuse in the book
16
+ url: http://github.com
@@ -0,0 +1,7 @@
1
+ ---
2
+ - id: 1
3
+ name: My Project
4
+ created_at: <%= 1.day.ago.strftime('%m/%d/%Y %I:%M%p') %>
5
+ - id: 2
6
+ name: Someone Elses Project
7
+ author_id: <%= Author.first.id %>
@@ -0,0 +1,7 @@
1
+ ---
2
+ - id: 1
3
+ name: Phaidon
4
+ - id: 2
5
+ name: Penguin
6
+ - id: 7
7
+ name: Marvel
@@ -0,0 +1,5 @@
1
+ ---
2
+ - name: Book Court
3
+ city: Brooklyn
4
+ - name: Rocketship
5
+ city: Brooklyn