cloudfoundry-env 0.0.2 → 0.0.4

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 CHANGED
@@ -1,4 +1,5 @@
1
1
  *.gem
2
+ .idea
2
3
  .bundle
3
4
  Gemfile.lock
4
5
  pkg/*
data/README.md ADDED
@@ -0,0 +1,77 @@
1
+ This is a small gem which an application running on a Cloud Foundry instance can use to access their environment.
2
+ If the application is not running on Cloud Foundry then all methods will return nil so its easy to provide an alternate configuration.
3
+
4
+ ## Installation
5
+
6
+ ### Command Line
7
+ ```bash
8
+ gem install cloudfoundry-env
9
+ ```
10
+
11
+ ### Gemfile
12
+
13
+ ``` ruby
14
+ gem "cloudfoundry-env","~> 0.0.2", :require => "cloudfoundry/environment"
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ #### Listening on the proper HTTP port
20
+
21
+ ``` ruby
22
+ configure do
23
+ set(:port, CloudFoundry::Environment.port || 4567)
24
+ end
25
+ ```
26
+
27
+ #### Connecting to a service
28
+
29
+ ``` ruby
30
+ @redis = Redis.new(CloudFoundry::Environment.redis_cnx || {host: "127.0.0.1", port: "6379"})
31
+ ```
32
+
33
+ #### Conditional logic for multiple instances of an app
34
+
35
+ ``` ruby
36
+ # The new wordpress path
37
+ @blog_rss = "#{@blog}/post/category/announcement/feed"
38
+
39
+ freq = 60 + (60 * 5 * (CloudFoundry::Environment.instance_index || 0))
40
+
41
+ @blog_feed = CloudFoundry::Feed.new(@blog_rss, @redis, crawl_frequency: freq)
42
+
43
+ ```
44
+
45
+ ## CloudFoundry::Environment Methods
46
+
47
+ * host - Return a string with the host ip address or nil if not running on cloud
48
+ * port - Returns integer with port number
49
+ * instance_index - Returns integer with instance index starting at 1
50
+ * running_local? - returns `true` if the app is not running on a CloudFoundry instance
51
+ * is_prod_app?(regex) - Returns `true` if the app name starts with regex provided. Good for having staging and prod apps
52
+
53
+ * services - Returns a Hashie::Mash representation of the services so it can be used as a class with native attributes
54
+ * Cloud Foundry Services - http://start.cloudfoundry.com/services.html
55
+ * Hashie - https://github.com/intridea/hashie
56
+ * [service_name]_cnx - Returns a Hashie::Mash representation of only the credentials for a service. Example from rspec test:
57
+
58
+ ```ruby
59
+ cf = CloudFoundry::Environment
60
+ cf.redis_cnx.port.should == 5076
61
+ cf.redis_cnx.host.should == "172.30.48.40"
62
+ cf.redis_cnx.password.should == "49badd9d-40a9-aaa-4e8fcdc15a75"
63
+ ```
64
+
65
+ * [service_name]_info - Returns a Hashie::Mash representation of the service. Example from rspec test:
66
+
67
+ ``` ruby
68
+ cf = CloudFoundry::Environment
69
+ cf.mongo_info.name.should == "mongodb-78564"
70
+ cf.mongo_info.credentials.port.should == 25084
71
+ cf.mongo_cnx.host.should == "172.30.48.64"
72
+ cf.mongo_cnx.db.should == "db"
73
+ cf.mongo_cnx.username.should == "1aaca416-fb89-4a08-8b7b-3d022ef3c44b"
74
+ cf.mongo_cnx.password.should == "7ea3c7ab-bd10-4ff9-8131-50d951b5863f"
75
+ ```
76
+
77
+
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Cloudfoundry::Environment::VERSION
8
8
  s.authors = ["ciberch"]
9
9
  s.email = ["monica.keller@gmail.com"]
10
- s.homepage = "http://github.com/cloudfoundry-samples"
10
+ s.homepage = "https://github.com/cloudfoundry-samples/cloudfoundry-env"
11
11
  s.summary = "Ruby Apps can use gem to parse the Cloud Foundry Environment"
12
12
  s.description = "App Name, App Owner, Port Number, Host, Services, Instances"
13
13
 
@@ -11,6 +11,10 @@ module CloudFoundry
11
11
  raw_port.to_i if raw_port
12
12
  end
13
13
 
14
+ def host
15
+ ENV["VCAP_APP_HOST"]
16
+ end
17
+
14
18
  def instance_index
15
19
  return app_info.instance_index if app_info
16
20
  end
@@ -1,5 +1,5 @@
1
1
  module Cloudfoundry
2
2
  module Environment
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -10,6 +10,12 @@ describe "CloudFoundry::Environment" do
10
10
  cf.redis_cnx.should be_nil
11
11
  end
12
12
 
13
+ it "should read the host" do
14
+ CloudFoundry::Environment.host.should be_nil
15
+ ENV["VCAP_APP_HOST"] = "localhost"
16
+ CloudFoundry::Environment.host.should == "localhost"
17
+ end
18
+
13
19
  it "should recognize when its running on Cloud Foundry" do
14
20
  ENV["VCAP_APP_PORT"] = "9456"
15
21
  ENV["VCAP_APPLICATION"] = load_fixture("vcap_application.json")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudfoundry-env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-05 00:00:00.000000000Z
12
+ date: 2012-03-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70311463917620 !ruby/object:Gem::Requirement
16
+ requirement: &70203930070160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70311463917620
24
+ version_requirements: *70203930070160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hashie
27
- requirement: &70311463917200 !ruby/object:Gem::Requirement
27
+ requirement: &70203930069740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70311463917200
35
+ version_requirements: *70203930069740
36
36
  description: App Name, App Owner, Port Number, Host, Services, Instances
37
37
  email:
38
38
  - monica.keller@gmail.com
@@ -44,6 +44,7 @@ files:
44
44
  - .rspec
45
45
  - .rvmrc
46
46
  - Gemfile
47
+ - README.md
47
48
  - Rakefile
48
49
  - cloudfoundry-env.gemspec
49
50
  - lib/cloudfoundry/environment.rb
@@ -57,7 +58,7 @@ files:
57
58
  - spec/spec_helper.rb
58
59
  - spec/test_app/Gemfile
59
60
  - spec/test_app/sample.rb
60
- homepage: http://github.com/cloudfoundry-samples
61
+ homepage: https://github.com/cloudfoundry-samples/cloudfoundry-env
61
62
  licenses: []
62
63
  post_install_message:
63
64
  rdoc_options: []
@@ -91,3 +92,4 @@ test_files:
91
92
  - spec/spec_helper.rb
92
93
  - spec/test_app/Gemfile
93
94
  - spec/test_app/sample.rb
95
+ has_rdoc: