fluidfeatures-rails 0.5.1 → 0.6.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.
@@ -7,44 +7,57 @@ module FluidFeatures
7
7
  attr_accessor :enabled
8
8
  attr_accessor :ff_app
9
9
  end
10
-
10
+
11
11
  #
12
12
  # This is called once, when your Rails application fires up.
13
13
  # It sets up the before and after request hooks
14
14
  #
15
15
  def self.initializer
16
- #fixes class variable state persisted between calls
16
+
17
17
  @enabled = false
18
- #
19
- # Without these FluidFeatures credentials we cannot talk to
20
- # the FluidFeatures service.
21
- #
22
- #%w[FLUIDFEATURES_BASEURI FLUIDFEATURES_SECRET FLUIDFEATURES_APPID].each do |key|
23
- # unless ENV[key]
24
- # $stderr.puts "!! fluidfeatures-rails requires ENV[\"#{key}\"] (fluidfeatures is disabled)"
25
- # return
26
- # end
27
- #end
28
- unless defined? ::Rails
29
- $stderr.puts "!! fluidfeatures-rails requires rails (fluidfeatures is disabled)"
30
- return
31
- end
32
- $stderr.puts "=> fluidfeatures-rails initializing as app #{ENV["FLUIDFEATURES_APPID"]} with #{ENV["FLUIDFEATURES_BASEURI"]}"
33
18
 
19
+ # Initialize
34
20
  ::Rails::Application.initializer "fluidfeatures.initializer" do
35
21
  ActiveSupport.on_load(:action_controller) do
36
- replacements = {}
37
- replacements["baseuri"] = ENV["FLUIDFEATURES_BASEURI"] if ENV["FLUIDFEATURES_BASEURI"]
38
- replacements["appid"] = ENV["FLUIDFEATURES_APPID"] if ENV["FLUIDFEATURES_APPID"]
39
- replacements["secret"] = ENV["FLUIDFEATURES_SECRET"] if ENV["FLUIDFEATURES_SECRET"]
40
- config = ::FluidFeatures::Config.new("#{::Rails.root}/config/fluidfeatures.yml", ::Rails.env, replacements)
22
+
23
+ # Without these FluidFeatures credentials we cannot talk to
24
+ # the FluidFeatures service.
25
+ is_configured = true
26
+ ff_config_path = "#{::Rails.root}/config/fluidfeatures.yml"
27
+ unless File.file? ff_config_path
28
+ %w[FLUIDFEATURES_BASEURI FLUIDFEATURES_SECRET FLUIDFEATURES_APPID].each do |key|
29
+ is_configured &= ENV[key]
30
+ end
31
+ end
32
+ unless is_configured
33
+ $stderr.puts "fluidfeatures-rails is not configured. Run 'rails g fluidfeatures:config'"
34
+ break
35
+ end
36
+
37
+ if File.file? ff_config_path
38
+ config = ::FluidFeatures::Config.new(ff_config_path, ::Rails.env)
39
+ else
40
+ config = ::FluidFeatures::Config.new({
41
+ "base_uri" => ENV["FLUIDFEATURES_BASEURI"],
42
+ "app_id" => ENV["FLUIDFEATURES_APPID"],
43
+ "secret" => ENV["FLUIDFEATURES_SECRET"]
44
+ })
45
+ end
46
+
47
+ $stderr.puts "fluidfeatures-rails is configured with app_id '#{config["app_id"]}'. Run 'rails g fluidfeatures:config' to update config"
48
+
49
+ # create FF app store in global rails namespace
41
50
  ::FluidFeatures::Rails.ff_app = ::FluidFeatures.app(config)
51
+
52
+ # wrap each request in fluidfeatures user transaction
42
53
  ActionController::Base.append_before_filter :fluidfeatures_request_before
43
54
  ActionController::Base.append_after_filter :fluidfeatures_request_after
55
+
44
56
  end
45
57
  end
46
58
 
47
59
  @enabled = true
60
+
48
61
  end
49
62
 
50
63
  end
@@ -163,7 +176,7 @@ module ActionController
163
176
  # feature.
164
177
  # This helps the FluidFeatures database prepopulate the feature set
165
178
  # without requiring the developer to do it manually.
166
- #
179
+ #
167
180
  def fluidfeatures_request_after
168
181
  ff_transaction.end_transaction
169
182
  end
@@ -1,5 +1,5 @@
1
1
  module FluidFeatures
2
2
  module Rails
3
- VERSION = '0.5.1'
3
+ VERSION = '0.6.0'
4
4
  end
5
5
  end
@@ -0,0 +1,51 @@
1
+ module Fluidfeatures
2
+ class ConfigGenerator < ::Rails::Generators::Base
3
+
4
+ CONFIG_FILE = "config/fluidfeatures.yml"
5
+
6
+ def create_initializer_file
7
+
8
+ puts "Enter FluidFeatures credentials [press enter to skip]"
9
+ print "development app_id: "
10
+ dev_app_id = gets.chomp
11
+
12
+ print "development secret: "
13
+ dev_secret = gets.chomp
14
+
15
+ print "production app_id: "
16
+ prod_app_id = gets.chomp
17
+
18
+ print "production secret: "
19
+ prod_secret = gets.chomp
20
+
21
+ print "test app_id: "
22
+ test_app_id = gets.chomp
23
+
24
+ print "test secret: "
25
+ test_secret = gets.chomp
26
+
27
+ puts "Warning: production app_id and secret have not been set in #{CONFIG_FILE}"
28
+
29
+ create_file CONFIG_FILE, """
30
+ common:
31
+ base_uri: https://www.fluidfeatures.com/service
32
+ cache:
33
+ enable: false
34
+ dir: tmp/fluidfeatures
35
+ limit: 2mb
36
+
37
+ development:
38
+ app_id: #{dev_app_id}
39
+ secret: #{dev_secret}
40
+
41
+ test:
42
+ app_id: #{test_app_id}
43
+ secret: #{test_secret}
44
+
45
+ production:
46
+ app_id: #{prod_app_id}
47
+ secret: #{prod_secret}
48
+ """
49
+ end
50
+ end
51
+ end
@@ -10,7 +10,6 @@ describe "FluidFeatures Rails initialization" do
10
10
 
11
11
  it "should start application if Rails defined" do
12
12
  defined?(Rails).should be_true
13
- $stderr.should_receive(:puts).with("=> fluidfeatures-rails initializing as app #{ENV["FLUIDFEATURES_APPID"]} with #{ENV["FLUIDFEATURES_BASEURI"]}")
14
13
  FluidFeatures::Rails.initializer
15
14
  FluidFeatures::Rails.enabled.should be_true
16
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluidfeatures-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-10 00:00:00.000000000 Z
12
+ date: 2013-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluidfeatures
@@ -111,7 +111,7 @@ files:
111
111
  - lib/fluidfeatures/rails/app/controllers/fluidfeatures_controller.rb
112
112
  - lib/fluidfeatures/rails/config/routes.rb
113
113
  - lib/fluidfeatures/rails/version.rb
114
- - lib/generators/fluidfeatures/rails/install/install_generator.rb
114
+ - lib/generators/fluidfeatures/config_generator.rb
115
115
  - lib/pre_ruby192/uri.rb
116
116
  - spec/controller_extentions_spec.rb
117
117
  - spec/controller_spec.rb
@@ -1,29 +0,0 @@
1
- module FluidFeatures
2
- module Rails
3
- module Generators
4
- class InstallGenerator < ::Rails::Generators::Base
5
- def create_initializer_file
6
- create_file "config/fluidfeatures.yml", "common:
7
- baseuri: https://www.fluidfeatures.com/service
8
- cache:
9
- enable: false
10
- dir: tmp/fluidfeatures
11
- limit: 2mb
12
-
13
- development:
14
- appid:
15
- secret:
16
-
17
- test:
18
- appid:
19
- secret:
20
-
21
- production:
22
- appid:
23
- secret:
24
- "
25
- end
26
- end
27
- end
28
- end
29
- end