voomify_utility_drawer 0.1.8
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 +1 -0
- data/lib/base/httparty.rb +30 -0
- data/lib/extensions/hash.rb +10 -0
- data/lib/extensions/kernel.rb +14 -0
- data/lib/replace_rake_tasks.rb +17 -0
- data/lib/utility_drawer.rb +2 -0
- data/lib/voomify/config.rb +27 -0
- data/spec/hash_extension_spec.rb +18 -0
- data/spec/httparty_base_spec.rb +35 -0
- metadata +76 -0
data/README
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
This is a gem that defines extensions to classes and modules
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'httparty'
|
3
|
+
require 'yaml'
|
4
|
+
require 'voomify/config'
|
5
|
+
require 'extensions/hash'
|
6
|
+
|
7
|
+
|
8
|
+
class ClientBase
|
9
|
+
include HTTParty
|
10
|
+
include Voomify::Config
|
11
|
+
has_site_config "voomify.yml"
|
12
|
+
|
13
|
+
private
|
14
|
+
def self.hashes2struct(object, name="Root#{object.object_id}".gsub('-',''))
|
15
|
+
return case object
|
16
|
+
when Hash
|
17
|
+
object = object.clone
|
18
|
+
object.each do |key, value|
|
19
|
+
object[key] = self.hashes2struct(value, key.capitalize)
|
20
|
+
end
|
21
|
+
object.to_struct(name)
|
22
|
+
when Array
|
23
|
+
object = object.clone
|
24
|
+
object.map! { |i| self.hashes2struct(i, "Array#{self.object_id}".gsub('-','')) }
|
25
|
+
else
|
26
|
+
object
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# OverrideRakeTask
|
2
|
+
Rake::TaskManager.class_eval do
|
3
|
+
def alias_task(old_name, new_name)
|
4
|
+
@tasks[new_name] = @tasks.delete(old_name)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def alias_task(old_name, new_name)
|
9
|
+
Rake.application.alias_task(old_name, new_name)
|
10
|
+
end
|
11
|
+
|
12
|
+
def override_task(*args, &block)
|
13
|
+
name, params, deps = Rake.application.resolve_args(args.dup)
|
14
|
+
task = "#{Rake.application.current_scope.join(':')}:#{name.to_s}"
|
15
|
+
alias_task task.to_s, "#{task}:original"
|
16
|
+
Rake::Task.define_task(*args, &block)
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Voomify
|
2
|
+
module Config
|
3
|
+
module ClassMethods
|
4
|
+
def has_site_config(config_name)
|
5
|
+
class_eval <<-STUFF
|
6
|
+
@site_config = nil
|
7
|
+
|
8
|
+
def self.site_config
|
9
|
+
load_site_config unless @site_config
|
10
|
+
@site_config
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.load_site_config
|
14
|
+
raw_config = File.read("#{RAILS_ROOT}/config/#{config_name}")
|
15
|
+
erb_config = ERB.new(raw_config).result
|
16
|
+
@site_config = YAML.load(erb_config)[RAILS_ENV]
|
17
|
+
end
|
18
|
+
STUFF
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.included(base)
|
23
|
+
base.extend ClassMethods
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#require 'extensions/hash'
|
2
|
+
require 'utility_drawer'
|
3
|
+
|
4
|
+
describe "Hash" do
|
5
|
+
before(:all) do
|
6
|
+
end
|
7
|
+
|
8
|
+
it "to_struct should return a Struct" do
|
9
|
+
{:my_key=>"somevalue"}.to_struct("SomeStruct")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "to_struct should return a without a warning" do
|
13
|
+
{:my_key=>"somevalue"}.to_struct("SomeStruct")
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:each) do
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
RAILS_ROOT = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
require 'utility_drawer'
|
4
|
+
require 'base/httparty'
|
5
|
+
|
6
|
+
|
7
|
+
class SomeClass < ClientBase
|
8
|
+
base_uri "http://localhost:2001"
|
9
|
+
def self.find_instance(instance)
|
10
|
+
response = self.get('/application_instances/find_instance.xml', :query => {:instance=> instance})
|
11
|
+
return nil if response.code != 200
|
12
|
+
self.hashes2struct(response["application_instance"])
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.find_account_by_alias(account_alias)
|
16
|
+
response = self.get('/accounts/find_account_by_alias.xml', :query => {:alias=> account_alias})
|
17
|
+
self.hashes2struct(response["account"])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "base/HttParty" do
|
22
|
+
before(:all) do
|
23
|
+
end
|
24
|
+
|
25
|
+
# HAL must be running on localhost for this test. Use the live database
|
26
|
+
it "hashes2struct should work with two different XML files as input" do
|
27
|
+
instance = SomeClass.find_instance("friand-1")
|
28
|
+
instance.name.should == "website"
|
29
|
+
account = SomeClass.find_account_by_alias("orders@dancindogg.com")
|
30
|
+
account.subdomain.should == 'dancindogg'
|
31
|
+
end
|
32
|
+
|
33
|
+
after(:each) do
|
34
|
+
end
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: voomify_utility_drawer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 8
|
10
|
+
version: 0.1.8
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Russell Edens
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-10-08 00:00:00 -04:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: This gem contains a bunch of useful utilities.
|
23
|
+
email: russell@voomify.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README
|
30
|
+
files:
|
31
|
+
- lib/base/httparty.rb
|
32
|
+
- lib/extensions/hash.rb
|
33
|
+
- lib/extensions/kernel.rb
|
34
|
+
- lib/replace_rake_tasks.rb
|
35
|
+
- lib/utility_drawer.rb
|
36
|
+
- lib/voomify/config.rb
|
37
|
+
- README
|
38
|
+
- spec/httparty_base_spec.rb
|
39
|
+
- spec/hash_extension_spec.rb
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: http://www.github.com/voomify/utility_drawer
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options:
|
46
|
+
- --charset=UTF-8
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.3.7
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Voomify useful classes that most of our projects use
|
74
|
+
test_files:
|
75
|
+
- spec/httparty_base_spec.rb
|
76
|
+
- spec/hash_extension_spec.rb
|