mack-orm_common 0.5.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/README +3 -0
- data/lib/errors.rb +12 -0
- data/lib/genosaurus_helpers.rb +38 -0
- data/lib/mack-orm_common.rb +13 -0
- data/lib/model_column.rb +55 -0
- data/test/mack-orm_common_test.rb +16 -0
- data/test/test_helper.rb +8 -0
- metadata +59 -0
data/README
ADDED
data/lib/errors.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
module Mack
|
2
|
+
module Errors
|
3
|
+
# Raised if there are migrations that need to be run before a task is performed.
|
4
|
+
class UnrunMigrations < StandardError
|
5
|
+
# Taks the number of migrations that need to be run.
|
6
|
+
def initialize(number)
|
7
|
+
super("You currently have #{number} #{number == 1 ? "migration" : "migrations"} that #{number == 1 ? "needs" : "need"} to be run.")
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
end # Errors
|
12
|
+
end # Mack
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Mack
|
2
|
+
module Genosaurus
|
3
|
+
module Helpers
|
4
|
+
|
5
|
+
def columns(name = param(:name))
|
6
|
+
ivar_cache("form_columns") do
|
7
|
+
cs = []
|
8
|
+
cols = (param(:cols) || param(:columns))
|
9
|
+
if cols
|
10
|
+
cols.split(",").each do |x|
|
11
|
+
cs << Mack::Genosaurus::ModelColumn.new(name, x)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
cs
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def db_directory
|
19
|
+
File.join(Mack::Configuration.root, "db")
|
20
|
+
end
|
21
|
+
|
22
|
+
def migrations_directory
|
23
|
+
File.join(db_directory, "migrations")
|
24
|
+
end
|
25
|
+
|
26
|
+
def next_migration_number
|
27
|
+
last = Dir.glob(File.join(migrations_directory, "*.rb")).last
|
28
|
+
if last
|
29
|
+
return File.basename(last).match(/^\d+/).to_s.succ
|
30
|
+
end
|
31
|
+
return "001"
|
32
|
+
end
|
33
|
+
|
34
|
+
::Genosaurus.send(:include, self)
|
35
|
+
|
36
|
+
end # Helpers
|
37
|
+
end # Genosaurus
|
38
|
+
end # Mack
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'genosaurus_helpers')
|
2
|
+
require File.join(File.dirname(__FILE__), 'model_column')
|
3
|
+
require File.join(File.dirname(__FILE__), 'errors')
|
4
|
+
|
5
|
+
module Mack
|
6
|
+
module Configuration
|
7
|
+
|
8
|
+
def self.database_configurations
|
9
|
+
YAML::load(Erubis::Eruby.new(IO.read(File.join(Mack::Configuration.config_directory, "database.yml"))).result)
|
10
|
+
end
|
11
|
+
|
12
|
+
end # Configuration
|
13
|
+
end # Mack
|
data/lib/model_column.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module Mack
|
2
|
+
module Genosaurus
|
3
|
+
|
4
|
+
# Used to represent a 'column' from the param cols or columns for generators.
|
5
|
+
class ModelColumn
|
6
|
+
|
7
|
+
# The name of the column.
|
8
|
+
attr_accessor :column_name
|
9
|
+
# The type of the column. Ie. string, integer, datetime, etc...
|
10
|
+
attr_accessor :column_type
|
11
|
+
# The name of the model associated with the column. Ie. user, post, etc...
|
12
|
+
attr_accessor :model_name
|
13
|
+
|
14
|
+
# Takes in the model_name (user, post, etc...) and the column (username:string, body:text, etc...)
|
15
|
+
def initialize(model_name, column_unsplit)
|
16
|
+
self.model_name = model_name.singular.underscore
|
17
|
+
cols = column_unsplit.split(":")
|
18
|
+
self.column_name = cols.first.singular.underscore
|
19
|
+
self.column_type = cols.last.singular.underscore
|
20
|
+
end
|
21
|
+
|
22
|
+
# Examples:
|
23
|
+
# Mack::Generator::ColumnObject.new("user", "username:string").form_element_name # => "user[username]"
|
24
|
+
# Mack::Generator::ColumnObject.new("Post", "body:text").form_element_name # => "post[body]"
|
25
|
+
def form_element_name
|
26
|
+
"#{self.model_name}[#{self.column_name}]"
|
27
|
+
end
|
28
|
+
|
29
|
+
# Examples:
|
30
|
+
# Mack::Generator::ColumnObject.new("user", "username:string").form_element_id # => "user_username"
|
31
|
+
# Mack::Generator::ColumnObject.new("Post", "body:text").form_element_id # => "post_body"
|
32
|
+
def form_element_id
|
33
|
+
"#{self.model_name}_#{self.column_name}"
|
34
|
+
end
|
35
|
+
|
36
|
+
# Generates the appropriate HTML form field for the type of column represented.
|
37
|
+
#
|
38
|
+
# Examples:
|
39
|
+
# Mack::Generator::ColumnObject.new("user", "username:string").form_field
|
40
|
+
# => "<input type="text" name="user[username]" id="user_username" size="30" value="<%= user.username %>" />"
|
41
|
+
# Mack::Generator::ColumnObject.new("Post", "body:text").form_field
|
42
|
+
# => "<textarea name="post[body]" id="post_id"><%= post.body %></textarea>"
|
43
|
+
def form_field
|
44
|
+
case self.column_type
|
45
|
+
when "text"
|
46
|
+
%{<textarea name="#{self.form_element_name}" id="#{self.form_element_id}" cols="60" rows="20"><%= @#{self.model_name}.#{self.column_name} %></textarea>}
|
47
|
+
else
|
48
|
+
%{<input type="text" name="#{self.form_element_name}" id="#{self.form_element_id}" size="30" value="<%= @#{self.model_name}.#{self.column_name} %>" />}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end # ModelColumn
|
53
|
+
|
54
|
+
end # Generator
|
55
|
+
end # Mack
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mack-orm_common
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- markbates
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-05-06 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: "mack-orm_common was developed by: markbates"
|
17
|
+
email:
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/errors.rb
|
26
|
+
- lib/genosaurus_helpers.rb
|
27
|
+
- lib/mack-orm_common.rb
|
28
|
+
- lib/model_column.rb
|
29
|
+
- README
|
30
|
+
has_rdoc: true
|
31
|
+
homepage:
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "0"
|
43
|
+
version:
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
version:
|
50
|
+
requirements: []
|
51
|
+
|
52
|
+
rubyforge_project: magrathea
|
53
|
+
rubygems_version: 1.0.1
|
54
|
+
signing_key:
|
55
|
+
specification_version: 2
|
56
|
+
summary: Common files shared with all Mack ORM gems.
|
57
|
+
test_files:
|
58
|
+
- test/mack-orm_common_test.rb
|
59
|
+
- test/test_helper.rb
|