bzsnippets 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in snippets.gemspec
4
3
  gemspec
@@ -1,57 +1,60 @@
1
1
  require 'active_support/concern'
2
- require 'bzproxies'
2
+ require 'active_support/core_ext/hash'
3
+ require 'pathname'
4
+ require 'delegate'
3
5
  module Snippets
4
6
  module Object
5
7
  module EnvAttribute
6
8
  extend ActiveSupport::Concern
7
9
 
8
- class EnvironmentProxy < Proxy
10
+ class EnvProxy < Delegator
11
+ def initialize(value, opts={})
12
+ super(value)
13
+ @delegate_sd_obj = value
14
+ opts[:env] = lambda{opts[:env]} if opts[:env].kind_of? String
15
+ @options = opts
16
+ end
17
+
18
+ def __setobj__(obj)
19
+ @delegate_sd_obj = obj
20
+ end
9
21
 
10
22
  def __getobj__
11
23
  env = @options[:env].call
12
- @target[env]
24
+ hsh = all_envs
25
+ (hsh.kind_of?(Hash) && hsh[env]) || nil
13
26
  end
14
27
 
15
28
  def all_envs
16
- @target
29
+ if @options[:source].kind_of? Proc
30
+ if @options[:source].arity == 1
31
+ @options[:source].call(self)
32
+ else
33
+ @options[:source].call
34
+ end
35
+ else
36
+ @delegate_sd_obj ||= fetch_source(@options[:source])
37
+ end
17
38
  end
18
- end
19
39
 
20
- def fetch_source src
21
- YAML.load_file(src)
40
+ private
41
+
42
+ def fetch_source value
43
+ YAML.load(Pathname.new(value).open.read).with_indifferent_access
44
+ end
22
45
  end
23
46
 
47
+
24
48
  module ClassMethods
25
- def env_attribute *args
26
- if (args.last.kind_of?(::Hash) && (args.length > 1))
27
- opts = args.pop
49
+ def env_attribute name, opts={}
50
+ opts[:env] ||= lambda{(Rails.env if defined? Rails) || RAILS_ENV || "development"}
51
+ define_method name do
52
+ v = instance_variable_get("@#{name}")
53
+ instance_variable_set("@#{name}", EnvProxy.new(nil, opts)) unless v
54
+ instance_variable_get("@#{name}")
28
55
  end
29
- opts ||= {}
30
- raise "setup :source option" unless opts[:source]
31
- if defined? Rails
32
- opts[:env] ||= lambda{ Rails.env }
33
- else
34
- opts[:env] ||= lambda do
35
- if defined? Rails
36
- Rails.env
37
- else
38
- ENV["RAILS_ENV"] || "development"
39
- end
40
- end
41
- end
42
- proxy_accessor *args, :proxy => EnvironmentProxy, :source => opts[:source], :env => opts[:env]
43
- args.each do |i|
44
- old = "_#{i}".to_sym
45
- alias_method old, i
46
- define_method i do
47
- value = self.send(old)
48
- unless value
49
- self.send("#{i}=", fetch_source(opts[:source]))
50
- self.send(old)
51
- else
52
- value
53
- end
54
- end
56
+ define_method "#{name}=" do |value|
57
+ instance_variable_set("@#{name}", EnvProxy.new(value, opts))
55
58
  end
56
59
  end
57
60
  end
@@ -1,3 +1,3 @@
1
1
  module Snippets
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -15,5 +15,5 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Snippets::VERSION
17
17
  gem.add_dependency "activesupport", "~> 3"
18
- gem.add_dependency "bzproxies", "~> 0.1.7"
18
+ gem.add_development_dependency "rspec"
19
19
  end
@@ -8,6 +8,7 @@ describe Snippets::Object do
8
8
  include Snippets::Object::EnvAttribute
9
9
  env_attribute :a, :source => (Pathname.new(__FILE__) + '../../fixtures/config.yml'), :env => lambda{"test"}
10
10
  env_attribute :a1, :source => (Pathname.new(__FILE__) + '../../fixtures/config.yml'), :env => lambda{"development"}
11
+ env_attribute :b, :source => lambda{|i| YAML.load_file(Pathname.new(__FILE__) + '../../fixtures/config.yml')}, :env => lambda{"test"}
11
12
  end
12
13
  end
13
14
  it "should work" do
@@ -29,7 +30,12 @@ describe Snippets::Object do
29
30
  a = Tester.new
30
31
  a.a1 = YAML.load_file(Pathname.new(__FILE__) + '../../fixtures/config.yml')
31
32
  a.a1["adapter"] = "dfsdfdsfdsf"
32
- a.a1.target["development"]["adapter"].should == "dfsdfdsfdsf"
33
+ a.a1["adapter"].should == "dfsdfdsfdsf"
34
+ end
35
+
36
+ it "should allow source lambdas" do
37
+ a = Tester.new
38
+ a.b.should == a.a
33
39
  end
34
40
 
35
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bzsnippets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -28,21 +28,21 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3'
30
30
  - !ruby/object:Gem::Dependency
31
- name: bzproxies
31
+ name: rspec
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ~>
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.1.7
38
- type: :runtime
37
+ version: '0'
38
+ type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.1.7
45
+ version: '0'
46
46
  description: Ruby and Rails code snippets
47
47
  email:
48
48
  - akostrov@spbtv.com
@@ -64,7 +64,6 @@ files:
64
64
  - spec/fixtures/config.yml
65
65
  - spec/object/env_attribute_spec.rb
66
66
  - spec/spec_helper.rb
67
- - unicorn
68
67
  homepage: http://spbtv.com
69
68
  licenses: []
70
69
  post_install_message:
data/unicorn DELETED
@@ -1,52 +0,0 @@
1
- #! /bin/sh
2
-
3
- # File: /etc/init.d/unicorn
4
-
5
- ### BEGIN INIT INFO
6
- # Provides: unicorn
7
- # Required-Start: $local_fs $remote_fs $network $syslog
8
- # Required-Stop: $local_fs $remote_fs $network $syslog
9
- # Default-Start: 2 3 4 5
10
- # Default-Stop: 0 1 6
11
- # Short-Description: starts the unicorn web server
12
- # Description: starts unicorn
13
- ### END INIT INFO
14
-
15
- DAEMON="/home/deploy/.rvm/bin/bootup_unicorn_rails"
16
- DAEMON_OPTS="-c /home/deploy/apps/intranet/production/current/config/unicorn/production.rb -E production -D"
17
- NAME=unicorn
18
- DESC="Unicorn app for intranet"
19
- PID=/home/deploy/apps/intranet/production/shared/pids/unicorn.pid
20
-
21
-
22
- case "$1" in
23
- start)
24
- echo -n "Starting $DESC: "
25
- su - deploy -c "$DAEMON $DAEMON_OPTS"
26
- echo "$NAME."
27
- ;;
28
- stop)
29
- echo -n "Stopping $DESC: "
30
- kill -QUIT `cat $PID`
31
- echo "$NAME."
32
- ;;
33
- restart)
34
- echo -n "Restarting $DESC: "
35
- kill -QUIT `cat $PID`
36
- sleep 1
37
- su - deploy -c "$DAEMON $DAEMON_OPTS"
38
- echo "$NAME."
39
- ;;
40
- reload)
41
- echo -n "Reloading $DESC configuration: "
42
- kill -HUP `cat $PID`
43
- echo "$NAME."
44
- ;;
45
- *)
46
- echo "Usage: $NAME {start|stop|restart|reload}" >&2
47
- exit 1
48
- ;;
49
- esac
50
-
51
- exit 0
52
-