localeapp 0.0.11 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md ADDED
@@ -0,0 +1,19 @@
1
+ # Version 0.1.1
2
+
3
+ * Gem compiled with 1.8.7
4
+
5
+ # Version 0.1.0
6
+
7
+ * Added support for Heroku's Cedar stack
8
+ * Added a safer configuration style where enabled environments are explicitly
9
+ defined
10
+ * Removed some unnecessary default options from config files generated with
11
+ `localeapp install`
12
+ * Fixed `localeapp push` with no arguments
13
+
14
+ ## NOTICE
15
+
16
+ If you've added disabled_polling_environments,
17
+ disabled_reloading_environments or disabled_sending_environments to your
18
+ initializer you should change these to polling_environments,
19
+ reloading_environments and sending_environments and configure as per the README
@@ -1,8 +1,10 @@
1
- h1. Locale
1
+ # Locale
2
+
3
+ [![Build status](https://secure.travis-ci.org/Locale/localeapp.png)](http://travis-ci.org/Locale/localeapp)
2
4
 
3
5
  The localeapp gem connects your rails app to the Locale service on
4
- "localeapp.com":http://www.localeapp.com. Locale makes hand editing translation
5
- files something you don't have to do.
6
+ http://www.localeapp.com. Locale makes hand editing translation files something
7
+ you don't have to do.
6
8
 
7
9
  The gem hooks into the i18n exception mechanism to send missing translations to
8
10
  the app. When translated content has been added it's automatically pulled down
@@ -12,54 +14,42 @@ We're still in private beta but if you think Locale would be useful to you and
12
14
  are willing to provide feedback then please get in touch at info@localeapp.com
13
15
  and we'll see what we can do.
14
16
 
15
- h2. Installation
17
+ ## Installation
16
18
 
17
- h3. Rails 3
19
+ ### Rails 3
18
20
 
19
- Add the localeapp gem to your Gemfile and install it:
21
+ Add the localeapp gem to your `Gemfile` and install it:
20
22
 
21
- <pre>
22
- echo "gem 'localeapp'" >> Gemfile
23
- bundle install
24
- </pre>
23
+ echo "gem 'localeapp'" >> Gemfile
24
+ bundle install
25
25
 
26
26
  Create a project on localeapp.com and get the api key. Then run:
27
27
 
28
- <pre>
29
- bundle exec localeapp install <YOUR_API_KEY>
30
- </pre>
28
+ bundle exec localeapp install <YOUR_API_KEY>
31
29
 
32
30
  This will check everything looks good and create
33
- config/initializers/localeapp.rb for you.
31
+ `config/initializers/localeapp.rb` for you.
34
32
 
35
- h3. Rails 2.3
33
+ ### Rails 2.3
36
34
 
37
- Define localeapp in config/environment.rb:
35
+ Define localeapp in `config/environment.rb`:
38
36
 
39
- <pre>
40
- config.gem 'localeapp'
41
- </pre>
37
+ config.gem 'localeapp'
42
38
 
43
39
  Install the gem:
44
40
 
45
- <pre>
46
- rake gems:install
47
- </pre>
41
+ rake gems:install
48
42
 
49
43
  Create a project on localeapp.com and get the api key. Then run:
50
44
 
51
- <pre>
52
- localeapp install <YOUR_API_KEY>
53
- </pre>
45
+ localeapp install <YOUR_API_KEY>
54
46
 
55
- h2. Importing existing content
47
+ ## Importing existing content
56
48
 
57
49
  You can import via localeapp.com or with the command line tool. To import
58
50
  existing translations do:
59
51
 
60
- <pre>
61
- localeapp import config/locales/en.yml
62
- </pre>
52
+ localeapp import config/locales/en.yml
63
53
 
64
54
  This will queue importing the file. The projects pages on localeapp.com will
65
55
  automatically refresh so you can see the import progress.
@@ -67,81 +57,73 @@ automatically refresh so you can see the import progress.
67
57
  If you've more than one locale to import you can zip up the yml files. Both
68
58
  localeapp.com and the localeapp import command accept zip files.
69
59
 
70
- h2. Automatically sending missing translations
60
+ ## Automatically sending missing translations
71
61
 
72
62
  Missing translations are automatically sent only in the development environment
73
63
  by default. When a page is refreshed any missing translations will be sent to
74
64
  localeapp.com.
75
65
 
76
66
  If you want to disable sending missing translations in the development
77
- environment then edit config/initializers/localeapp.rb to include:
67
+ environment then edit `config/initializers/localeapp.rb` to include:
78
68
 
79
- <pre>
80
- config.disabled_sending_environments << 'development'
81
- </pre>
69
+ config.sending_environments = []
82
70
 
83
- This is just an array, so you can configure it to match any environment you
84
- wish.
71
+ This is just an array, so you can configure it to match send in any environment
72
+ you wish.
85
73
 
86
- h2. Automatically pulling translations
74
+ ## Automatically pulling translations
87
75
 
88
76
  There are two ways to do this, one that suits a single developer working the
89
77
  code locally and one where the translations are being pulled down to a staging
90
78
  (or live) server.
91
79
 
92
- h3. Single developer
80
+ ### Single developer
93
81
 
94
82
  In this mode the gem pulls any updated translations from localeapp.com at the
95
83
  beginning of each request. This is the default setting so you don't need to do
96
84
  anything special.
97
85
 
98
- h3. Staging server
86
+ ### Staging server
99
87
 
100
88
  In this mode you configure the individual listeners to not poll every request
101
89
  and instead run localeapp in daemon mode to fetch updated translations. This is
102
90
  useful when you have more than one listener and don't want them to race to
103
91
  update the translations.
104
92
 
105
- h4. Disabling polling
93
+ #### Disabling polling
106
94
 
107
95
  Edit config/initializers/localeapp.rb to include:
108
96
 
109
- <pre>
110
- config.disabled_polling_environments << 'development'
111
- </pre>
97
+ config.polling_environments = []
112
98
 
113
99
  Run the daemon with:
114
100
 
115
- <pre>
116
- localeapp daemon
117
- </pre>
101
+ localeapp daemon
118
102
 
119
103
  The listeners will automatically reload translations when they see there are
120
104
  new ones.
121
105
 
122
- h3. Disabling Reloading
106
+ ### Disabling Reloading
123
107
 
124
- Automatic reloading is disabled everywhere but the development environment, and
125
- can be disabled there in a similar way to polling and sending:
108
+ Automatic reloading is only enabled in the development environment by default and
109
+ can be disabled in a similar way to polling and sending:
126
110
 
127
- <pre>
128
- config.disabled_reloading_environments << 'development'
129
- </pre>
111
+ config.reloading_environments = []
130
112
 
131
- h3. Inviting other developers and translators
113
+ ### Inviting other developers and translators
132
114
 
133
115
  You can invite other developers and translators via localeapp.com. Developers
134
116
  have access to all the content and all the locales. Translators are restricted
135
117
  to editing only the locales you give them access too.
136
118
 
137
- h3. Adding a locale
119
+ ### Adding a locale
138
120
 
139
121
  If we find an unknown locale during an import we'll add it to your project.
140
122
  You can also add a new locale to a project via localeapp.com. This will create
141
123
  missing translations for every translation key. You will need to restart any
142
124
  listeners completely to pick up the new locale.
143
125
 
144
- h3. Support and feedback
126
+ ### Support and feedback
145
127
 
146
128
  You can contact us via the support link at the bottom of the page, emailing
147
- info@localeapp.com, or on campfire at https://localeapp.campfirenow.com/d77b5
129
+ info@localeapp.com, or on campfire at https://localeapp.campfirenow.com/d77b5
data/bin/localeapp CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
3
3
 
4
+ require 'slop'
4
5
  require 'localeapp'
5
6
 
6
7
  # Don't connect to the net if we're running under cucumber for testing
@@ -14,48 +15,122 @@ if ENV['FAKE_WEB_DURING_CUCUMBER_RUN'] && fake_data_as_json = ENV['FAKE_WEB_FAKE
14
15
  end
15
16
  end
16
17
 
17
- args = ARGV.dup
18
-
19
- command = args.shift.strip rescue nil
20
-
21
- unless %w{help install}.include?(command)
18
+ def include_config_file
22
19
  unless Localeapp.include_config_file
23
20
  puts "Could not load config file"
24
- exit
21
+ exit 1
25
22
  end
26
23
  end
24
+ slop = Slop.new(ARGV, :help => true, :strict => true) do
25
+ banner "Usage: localeapp COMMAND [options]"
26
+ description <<-COMMANDS
27
+ COMMAND:
28
+ install <api_key> - Creates new configuration files and confirms key works
29
+ pull - Pulls all translations from localeapp.com
30
+ push <file> - Pushes a translation file to localeapp.com
31
+ update - Gets any changes since the last poll and updates the yml
32
+ daemon - Simple daemon (checks every 5 seconds for new translations)
33
+ COMMANDS
27
34
 
28
- case command
29
- when 'install'
30
- key = args.shift.strip rescue nil
31
- installer = Localeapp::CLI::Install.new
32
- if installer.execute(key)
33
- exit 0
34
- else
35
- exit 1
35
+ on_empty { puts self.to_s }
36
+ end
37
+
38
+ slop.command :install do
39
+ execute do |opts, args|
40
+ key = args.first
41
+ installer = Localeapp::CLI::Install.new
42
+ if installer.execute(key)
43
+ exit 0
44
+ else
45
+ exit 1
46
+ end
36
47
  end
37
- when 'pull'
38
- Localeapp::CLI::Pull.new.execute
39
- when 'push'
40
- file = args.shift.strip rescue nil
41
- pusher = Localeapp::CLI::Push.new
42
- pusher.execute(file)
43
- when 'update'
44
- Localeapp::CLI::Update.new.execute
45
- when 'daemon'
46
- while true do
48
+ end
49
+
50
+ slop.command :pull do
51
+ execute do |opts, args|
52
+ include_config_file
53
+ Localeapp::CLI::Pull.new.execute
54
+ end
55
+ end
56
+
57
+ slop.command :push do
58
+ on_empty { puts "localeapp push requires an file to push" }
59
+
60
+ execute do |opts, args|
61
+ file = args.first
62
+ exit 1 if file.nil?
63
+ include_config_file
64
+ pusher = Localeapp::CLI::Push.new
65
+ pusher.execute(file)
66
+ end
67
+ end
68
+
69
+ slop.command :update do
70
+ execute do |opts, args|
71
+ include_config_file
47
72
  Localeapp::CLI::Update.new.execute
48
- sleep 5
49
73
  end
50
- else
51
- puts <<-HELP
52
- Usage: localeapp COMMAND [ARGS]
53
-
54
- Commands:
55
- install <api_key> - Creates new configuration files and confirms key works
56
- pull - Pulls all translations from localeapp.com
57
- push <file> - Pushes a translation file to localeapp.com
58
- update - Gets any changes since the last poll and updates the yml files
59
- daemon - Simple daemon that checks every 5 seconds for new translations
60
- HELP
61
74
  end
75
+
76
+ slop.command :daemon do
77
+ execute do |opts, args|
78
+ include_config_file
79
+ while true do
80
+ Localeapp::CLI::Update.new.execute
81
+ sleep 5
82
+ end
83
+ end
84
+ end
85
+
86
+ begin
87
+ slop.parse
88
+ rescue Slop::InvalidOptionError
89
+ puts slop
90
+ end
91
+
92
+ # args = ARGV.dup
93
+ #
94
+ # command = args.shift.strip rescue nil
95
+ #
96
+ # unless %w{help install}.include?(command)
97
+ # unless Localeapp.include_config_file
98
+ # puts "Could not load config file"
99
+ # exit
100
+ # end
101
+ # end
102
+ #
103
+ # case command
104
+ # when 'install'
105
+ # key = args.shift.strip rescue nil
106
+ # installer = Localeapp::CLI::Install.new
107
+ # if installer.execute(key)
108
+ # exit 0
109
+ # else
110
+ # exit 1
111
+ # end
112
+ # when 'pull'
113
+ # Localeapp::CLI::Pull.new.execute
114
+ # when 'push'
115
+ # file = args.shift.strip rescue nil
116
+ # pusher = Localeapp::CLI::Push.new
117
+ # pusher.execute(file)
118
+ # when 'update'
119
+ # Localeapp::CLI::Update.new.execute
120
+ # when 'daemon'
121
+ # while true do
122
+ # Localeapp::CLI::Update.new.execute
123
+ # sleep 5
124
+ # end
125
+ # else
126
+ # puts <<-HELP
127
+ # Usage: localeapp COMMAND [ARGS]
128
+ #
129
+ # Commands:
130
+ # install <api_key> - Creates new configuration files and confirms key works
131
+ # pull - Pulls all translations from localeapp.com
132
+ # push <file> - Pushes a translation file to localeapp.com
133
+ # update - Gets any changes since the last poll and updates the yml files
134
+ # daemon - Simple daemon that checks every 5 seconds for new translations
135
+ # HELP
136
+ # end
@@ -2,14 +2,14 @@ Feature: localeapp executable
2
2
 
3
3
  Scenario: Viewing help
4
4
  In order to see what options I have
5
- When I run `localeapp help`
5
+ When I run `localeapp --help`
6
6
  Then the output should contain:
7
7
  """
8
- Usage: localeapp COMMAND [ARGS]
8
+ Usage: localeapp COMMAND [options]
9
9
 
10
- Commands:
11
- install <api_key> - Creates new configuration files and confirms key works
12
- pull - Pulls all translations from localeapp.com
10
+ COMMAND:
11
+ install <api_key> - Creates new configuration files and confirms key works
12
+ pull - Pulls all translations from localeapp.com
13
13
  """
14
14
 
15
15
  Scenario: Running install
@@ -20,17 +20,44 @@ module Localeapp
20
20
  # RAILS_ROOT
21
21
  attr_accessor :project_root
22
22
 
23
+ # The names of environments where notifications are sent
24
+ # (defaults to 'development')
25
+ attr_accessor :sending_environments
26
+
27
+ # The names of environments where I18n.reload is called for each request
28
+ # (defaults to 'development')
29
+ attr_accessor :reloading_environments
30
+
31
+ # The names of environments where updates aren't pulled
32
+ # (defaults to 'development')
33
+ attr_accessor :polling_environments
34
+
35
+ # @deprecated Use {#sending_environments} instead. This is safer but make sure to reverse your logic if you've changed the defaults
23
36
  # The names of environments where notifications aren't sent (defaults to
24
37
  # 'test', 'cucumber', 'production')
25
38
  attr_accessor :disabled_sending_environments
39
+ def disabled_sending_environments=(value)
40
+ @deprecated_environment_config_used = true
41
+ @disabled_sending_environments = value
42
+ end
26
43
 
44
+ # @deprecated Use {#reloading_environments} instead. This is safer but make sure to reverse your logic if you've changed the defaults
27
45
  # The names of environments where I18n.reload isn't called for each request
28
46
  # (defaults to 'test', 'cucumber', 'production')
29
47
  attr_accessor :disabled_reloading_environments
48
+ def disabled_reloading_environments=(value)
49
+ @deprecated_environment_config_used = true
50
+ @disabled_reloading_environments = value
51
+ end
30
52
 
53
+ # @deprecated Use {#polling_environments} instead. This is safer but make sure to reverse your logic if you've changed the defaults
31
54
  # The names of environments where updates aren't pulled (defaults to
32
55
  # 'test', 'cucumber', 'production')
33
56
  attr_accessor :disabled_polling_environments
57
+ def disabled_polling_environments=(value)
58
+ @deprecated_environment_config_used = true
59
+ @disabled_polling_environments = value
60
+ end
34
61
 
35
62
  # The logger used by Localeapp
36
63
  attr_accessor :logger
@@ -47,12 +74,19 @@ module Localeapp
47
74
  # The complete path to the directory where translations are stored
48
75
  attr_accessor :translation_data_directory
49
76
 
77
+ def deprecated_environment_config_used?
78
+ @deprecated_environment_config_used
79
+ end
80
+
50
81
  def initialize
51
82
  @host = 'api.localeapp.com'
52
83
  @port = 80
53
84
  @disabled_sending_environments = %w(test cucumber production)
54
85
  @disabled_reloading_environments = %w(test cucumber production)
55
86
  @disabled_polling_environments = %w(test cucumber production)
87
+ @sending_environments = %w(development)
88
+ @reloading_environments = %w(development)
89
+ @polling_environments = %w(development)
56
90
  @poll_interval = 0
57
91
  @synchronization_data_file = File.join('log', 'localeapp.yml')
58
92
  @translation_data_directory = File.join('config', 'locales')
@@ -63,15 +97,30 @@ module Localeapp
63
97
  end
64
98
 
65
99
  def polling_disabled?
66
- disabled_polling_environments.include?(environment_name)
100
+ if deprecated_environment_config_used?
101
+ ::Localeapp.log "DEPRECATION: disabled_polling_environments is deprecated and will be removed. Use polling_environments instead and reverse the logic if you've changed the defaults"
102
+ disabled_polling_environments.include?(environment_name)
103
+ else
104
+ !polling_environments.include?(environment_name)
105
+ end
67
106
  end
68
107
 
69
108
  def reloading_disabled?
70
- disabled_reloading_environments.include?(environment_name)
109
+ if deprecated_environment_config_used?
110
+ ::Localeapp.log "DEPRECATION: disabled_reloading_environments is deprecated and will be removed. Use reloading_environments instead and reverse the logic if you've changed the defaults"
111
+ disabled_reloading_environments.include?(environment_name)
112
+ else
113
+ !reloading_environments.include?(environment_name)
114
+ end
71
115
  end
72
116
 
73
117
  def sending_disabled?
74
- disabled_sending_environments.include?(environment_name)
118
+ if deprecated_environment_config_used?
119
+ ::Localeapp.log "DEPRECATION: disabled_sending_environments is deprecated and will be removed. Use sending_environments instead and reverse the logic if you've changed the defaults"
120
+ disabled_sending_environments.include?(environment_name)
121
+ else
122
+ !sending_environments.include?(environment_name)
123
+ end
75
124
  end
76
125
 
77
126
  def write_initial(path)
@@ -83,8 +132,6 @@ require 'localeapp/rails'
83
132
 
84
133
  Localeapp.configure do |config|
85
134
  config.api_key = '#{@api_key}'
86
- config.host = '#{@host}'
87
- config.port = #{@port}
88
135
  end
89
136
  CONTENT
90
137
  end
@@ -1,3 +1,5 @@
1
+ require 'fileutils'
2
+
1
3
  module Localeapp
2
4
  class Updater
3
5
 
@@ -53,12 +55,16 @@ module Localeapp
53
55
  end
54
56
  end
55
57
 
56
- # from ActiveSupport
58
+ # originally from ActiveSupport
57
59
  def atomic_write(file_name, temp_dir = Dir.tmpdir)
58
60
  temp_file = Tempfile.new(File.basename(file_name), temp_dir)
59
61
  yield temp_file
60
62
  temp_file.close
61
- File.rename(temp_file.path, file_name)
63
+ # heroku has /tmp on a different fs
64
+ # so move first to sure they're on the same fs
65
+ # so rename will work
66
+ FileUtils.mv(temp_file.path, "#{file_name}.tmp")
67
+ File.rename("#{file_name}.tmp", file_name)
62
68
  end
63
69
  end
64
70
  end
@@ -1,3 +1,3 @@
1
1
  module Localeapp
2
- VERSION = "0.0.11"
2
+ VERSION = "0.1.1"
3
3
  end
data/localeapp.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency('json')
24
24
  s.add_dependency('rest-client')
25
25
  s.add_dependency('ya2yaml')
26
+ s.add_dependency('slop')
26
27
 
27
28
  s.add_development_dependency('rake')
28
29
  s.add_development_dependency('rspec', '2.5.0')
@@ -1,99 +1,220 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Localeapp::Configuration do
4
- before(:each) do
5
- @configuration = Localeapp::Configuration.new
6
- end
4
+ let(:configuration) { Localeapp::Configuration.new }
7
5
 
8
6
  it "sets the host by default" do
9
- @configuration.host.should == 'api.localeapp.com'
7
+ configuration.host.should == 'api.localeapp.com'
10
8
  end
11
9
 
12
10
  it "allows the host to be overwritten" do
13
- expect { @configuration.host = 'test.host' }.to change(@configuration, :host).to('test.host')
11
+ expect { configuration.host = 'test.host' }.to change(configuration, :host).to('test.host')
14
12
  end
15
13
 
16
14
  it "includes http_auth_username defaulting to nil" do
17
- @configuration.http_auth_username.should == nil
18
- @configuration.http_auth_username = "test"
19
- @configuration.http_auth_username.should == "test"
15
+ configuration.http_auth_username.should == nil
16
+ configuration.http_auth_username = "test"
17
+ configuration.http_auth_username.should == "test"
20
18
  end
21
19
 
22
20
  it "includes http_auth_password defaulting to nil" do
23
- @configuration.http_auth_password.should == nil
24
- @configuration.http_auth_password = "test"
25
- @configuration.http_auth_password.should == "test"
21
+ configuration.http_auth_password.should == nil
22
+ configuration.http_auth_password = "test"
23
+ configuration.http_auth_password.should == "test"
26
24
  end
27
25
 
28
26
  it "includes translation_data_directory defaulting to config/locales" do
29
- @configuration.translation_data_directory.should == File.join("config", "locales")
30
- @configuration.translation_data_directory = "test"
31
- @configuration.translation_data_directory.should == "test"
27
+ configuration.translation_data_directory.should == File.join("config", "locales")
28
+ configuration.translation_data_directory = "test"
29
+ configuration.translation_data_directory.should == "test"
30
+ end
31
+
32
+ context "enabled_sending_environments" do
33
+ it "is only development by default" do
34
+ configuration.sending_environments.should == ['development']
35
+ end
36
+ end
37
+
38
+ context "enabled_reloading_environments" do
39
+ it "is only development by default" do
40
+ configuration.reloading_environments.should == ['development']
41
+ end
42
+ end
43
+
44
+ context "enabled_polling_environments" do
45
+ it "is only development by default" do
46
+ configuration.polling_environments.should == ['development']
47
+ end
32
48
  end
33
49
 
34
50
  context "disabled_sending_environments" do
51
+ it "sets deprecated_environment_config_used flag to true" do
52
+ configuration.disabled_sending_environments = %(foo bar)
53
+ configuration.deprecated_environment_config_used?.should be_true
54
+ end
55
+
35
56
  it "does not include development by default" do
36
- @configuration.environment_name = 'development'
37
- @configuration.sending_disabled?.should be_false
57
+ configuration.environment_name = 'development'
58
+ configuration.sending_disabled?.should be_false
38
59
  end
39
60
 
40
61
  it "include cucumber by default" do
41
- @configuration.environment_name = 'cucumber'
42
- @configuration.sending_disabled?.should be_true
62
+ configuration.environment_name = 'cucumber'
63
+ configuration.sending_disabled?.should be_true
43
64
  end
44
65
 
45
66
  it "include test by default" do
46
- @configuration.environment_name = 'test'
47
- @configuration.sending_disabled?.should be_true
67
+ configuration.environment_name = 'test'
68
+ configuration.sending_disabled?.should be_true
48
69
  end
49
70
 
50
71
  it "include production by default" do
51
- @configuration.environment_name = 'production'
52
- @configuration.sending_disabled?.should be_true
72
+ configuration.environment_name = 'production'
73
+ configuration.sending_disabled?.should be_true
53
74
  end
54
75
  end
55
76
 
56
77
  context "disabled_reloading_environments" do
78
+ it "sets deprecated_environment_config_used flag to true" do
79
+ configuration.disabled_reloading_environments = %(foo bar)
80
+ configuration.deprecated_environment_config_used?.should be_true
81
+ end
82
+
57
83
  it "does not include development by default" do
58
- @configuration.environment_name = 'development'
59
- @configuration.reloading_disabled?.should be_false
84
+ configuration.environment_name = 'development'
85
+ configuration.reloading_disabled?.should be_false
60
86
  end
61
87
 
62
88
  it "include cucumber by default" do
63
- @configuration.environment_name = 'cucumber'
64
- @configuration.reloading_disabled?.should be_true
89
+ configuration.environment_name = 'cucumber'
90
+ configuration.reloading_disabled?.should be_true
65
91
  end
66
92
 
67
93
  it "include test by default" do
68
- @configuration.environment_name = 'test'
69
- @configuration.reloading_disabled?.should be_true
94
+ configuration.environment_name = 'test'
95
+ configuration.reloading_disabled?.should be_true
70
96
  end
71
97
 
72
98
  it "include production by default" do
73
- @configuration.environment_name = 'production'
74
- @configuration.reloading_disabled?.should be_true
99
+ configuration.environment_name = 'production'
100
+ configuration.reloading_disabled?.should be_true
75
101
  end
76
102
  end
77
103
 
78
104
  context "disabled_polling_environments" do
105
+ it "sets deprecated_environment_config_used flag to true" do
106
+ configuration.disabled_polling_environments = %(foo bar)
107
+ configuration.deprecated_environment_config_used?.should be_true
108
+ end
109
+
79
110
  it "does not include development by default" do
80
- @configuration.environment_name = 'development'
81
- @configuration.polling_disabled?.should be_false
111
+ configuration.environment_name = 'development'
112
+ configuration.polling_disabled?.should be_false
82
113
  end
83
114
 
84
115
  it "include cucumber by default" do
85
- @configuration.environment_name = 'cucumber'
86
- @configuration.polling_disabled?.should be_true
116
+ configuration.environment_name = 'cucumber'
117
+ configuration.polling_disabled?.should be_true
87
118
  end
88
119
 
89
120
  it "include test by default" do
90
- @configuration.environment_name = 'test'
91
- @configuration.polling_disabled?.should be_true
121
+ configuration.environment_name = 'test'
122
+ configuration.polling_disabled?.should be_true
92
123
  end
93
124
 
94
125
  it "include production by default" do
95
- @configuration.environment_name = 'production'
96
- @configuration.polling_disabled?.should be_true
126
+ configuration.environment_name = 'production'
127
+ configuration.polling_disabled?.should be_true
128
+ end
129
+ end
130
+
131
+ describe "polling_disabled?" do
132
+ context "deprecated syntax used" do
133
+ it "is true when environment is disabled" do
134
+ configuration.disabled_polling_environments = %(foo)
135
+ configuration.environment_name = 'foo'
136
+ configuration.should be_polling_disabled
137
+ end
138
+
139
+ it "is false when environment is not disabled" do
140
+ configuration.disabled_polling_environments = %(foo)
141
+ configuration.environment_name = 'bar'
142
+ configuration.should_not be_polling_disabled
143
+ end
144
+ end
145
+
146
+ context "new syntax used" do
147
+ it "is true when environment is not enabled" do
148
+ configuration.polling_environments = %(foo)
149
+ configuration.environment_name = 'bar'
150
+ configuration.should be_polling_disabled
151
+ end
152
+
153
+ it "is false when environment is enabled" do
154
+ configuration.polling_environments = %(foo)
155
+ configuration.environment_name = 'foo'
156
+ configuration.should_not be_polling_disabled
157
+ end
158
+ end
159
+ end
160
+
161
+ describe "reloading_disabled?" do
162
+ context "deprecated syntax used" do
163
+ it "is true when environment is disabled" do
164
+ configuration.disabled_reloading_environments = %(foo)
165
+ configuration.environment_name = 'foo'
166
+ configuration.should be_reloading_disabled
167
+ end
168
+
169
+ it "is false when environment is not disabled" do
170
+ configuration.disabled_reloading_environments = %(foo)
171
+ configuration.environment_name = 'bar'
172
+ configuration.should_not be_reloading_disabled
173
+ end
174
+ end
175
+
176
+ context "new syntax used" do
177
+ it "is true when environment is not enabled" do
178
+ configuration.reloading_environments = %(foo)
179
+ configuration.environment_name = 'bar'
180
+ configuration.should be_reloading_disabled
181
+ end
182
+
183
+ it "is false when environment is enabled" do
184
+ configuration.reloading_environments = %(foo)
185
+ configuration.environment_name = 'foo'
186
+ configuration.should_not be_reloading_disabled
187
+ end
188
+ end
189
+ end
190
+
191
+ describe "sending_disabled?" do
192
+ context "deprecated syntax used" do
193
+ it "is true when environment is disabled" do
194
+ configuration.disabled_sending_environments = %(foo)
195
+ configuration.environment_name = 'foo'
196
+ configuration.should be_sending_disabled
197
+ end
198
+
199
+ it "is false when environment is not disabled" do
200
+ configuration.disabled_sending_environments = %(foo)
201
+ configuration.environment_name = 'bar'
202
+ configuration.should_not be_sending_disabled
203
+ end
204
+ end
205
+
206
+ context "new syntax used" do
207
+ it "is true when environment is not enabled" do
208
+ configuration.sending_environments = %(foo)
209
+ configuration.environment_name = 'bar'
210
+ configuration.should be_sending_disabled
211
+ end
212
+
213
+ it "is false when environment is enabled" do
214
+ configuration.sending_environments = %(foo)
215
+ configuration.environment_name = 'foo'
216
+ configuration.should_not be_sending_disabled
217
+ end
97
218
  end
98
219
  end
99
220
  end
@@ -109,8 +230,6 @@ require 'localeapp/rails'
109
230
 
110
231
  Localeapp.configure do |config|
111
232
  config.api_key = 'APIKEY'
112
- config.host = 'api.localeapp.com'
113
- config.port = 80
114
233
  end
115
234
  CONTENT
116
235
  File.should_receive(:open).with(path, 'w+').and_yield(file)
@@ -23,8 +23,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
23
23
 
24
24
  context "when polling is enabled" do
25
25
  before do
26
- Localeapp.configuration.environment_name = 'development' # reloading enabled
27
- Localeapp.configuration.disabled_reloading_environments << 'development'
26
+ Localeapp.configuration.environment_name = 'development'
28
27
  end
29
28
 
30
29
  it "calls poller.poll! when the synchronization file's polled_at has changed" do
@@ -41,8 +40,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
41
40
 
42
41
  context "when polling is disabled" do
43
42
  before do
44
- Localeapp.configuration.environment_name = 'production' # reloading disabled
45
- Localeapp.configuration.disabled_reloading_environments << 'production'
43
+ Localeapp.configuration.environment_name = 'production'
46
44
  end
47
45
 
48
46
  it "doesn't poller.poll! when the synchronization file's polled_at has changed" do
@@ -59,8 +57,8 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
59
57
 
60
58
  context "when reloading is enabled" do
61
59
  before do
62
- Localeapp.configuration.environment_name = 'development' # reloading enabled
63
- Localeapp.configuration.disabled_polling_environments << 'development'
60
+ Localeapp.configuration.environment_name = 'development'
61
+ Localeapp.poller.stub!(:poll!)
64
62
  end
65
63
 
66
64
  it "calls I18n.reload! when the synchronization file's updated_at has changed" do
@@ -77,8 +75,7 @@ describe Localeapp::Rails::Controller, '#handle_translation_updates' do
77
75
 
78
76
  context "when reloading is disabled" do
79
77
  before do
80
- Localeapp.configuration.environment_name = 'production' # reloading disabled
81
- Localeapp.configuration.disabled_polling_environments << 'production'
78
+ Localeapp.configuration.environment_name = 'production'
82
79
  end
83
80
 
84
81
  it "doesn't call I18n.reload! when the synchronization file's updated_at has changed" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localeapp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
- - 11
10
- version: 0.0.11
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Christopher Dell
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-25 00:00:00 Z
19
+ date: 2011-09-07 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: i18n
@@ -75,7 +75,7 @@ dependencies:
75
75
  type: :runtime
76
76
  version_requirements: *id004
77
77
  - !ruby/object:Gem::Dependency
78
- name: rake
78
+ name: slop
79
79
  prerelease: false
80
80
  requirement: &id005 !ruby/object:Gem::Requirement
81
81
  none: false
@@ -86,12 +86,26 @@ dependencies:
86
86
  segments:
87
87
  - 0
88
88
  version: "0"
89
- type: :development
89
+ type: :runtime
90
90
  version_requirements: *id005
91
91
  - !ruby/object:Gem::Dependency
92
- name: rspec
92
+ name: rake
93
93
  prerelease: false
94
94
  requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ type: :development
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ name: rspec
107
+ prerelease: false
108
+ requirement: &id007 !ruby/object:Gem::Requirement
95
109
  none: false
96
110
  requirements:
97
111
  - - "="
@@ -103,11 +117,11 @@ dependencies:
103
117
  - 0
104
118
  version: 2.5.0
105
119
  type: :development
106
- version_requirements: *id006
120
+ version_requirements: *id007
107
121
  - !ruby/object:Gem::Dependency
108
122
  name: yard
109
123
  prerelease: false
110
- requirement: &id007 !ruby/object:Gem::Requirement
124
+ requirement: &id008 !ruby/object:Gem::Requirement
111
125
  none: false
112
126
  requirements:
113
127
  - - "="
@@ -119,11 +133,11 @@ dependencies:
119
133
  - 7
120
134
  version: 0.6.7
121
135
  type: :development
122
- version_requirements: *id007
136
+ version_requirements: *id008
123
137
  - !ruby/object:Gem::Dependency
124
138
  name: RedCloth
125
139
  prerelease: false
126
- requirement: &id008 !ruby/object:Gem::Requirement
140
+ requirement: &id009 !ruby/object:Gem::Requirement
127
141
  none: false
128
142
  requirements:
129
143
  - - "="
@@ -135,11 +149,11 @@ dependencies:
135
149
  - 7
136
150
  version: 4.2.7
137
151
  type: :development
138
- version_requirements: *id008
152
+ version_requirements: *id009
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: aruba
141
155
  prerelease: false
142
- requirement: &id009 !ruby/object:Gem::Requirement
156
+ requirement: &id010 !ruby/object:Gem::Requirement
143
157
  none: false
144
158
  requirements:
145
159
  - - "="
@@ -151,11 +165,11 @@ dependencies:
151
165
  - 6
152
166
  version: 0.3.6
153
167
  type: :development
154
- version_requirements: *id009
168
+ version_requirements: *id010
155
169
  - !ruby/object:Gem::Dependency
156
170
  name: fakeweb
157
171
  prerelease: false
158
- requirement: &id010 !ruby/object:Gem::Requirement
172
+ requirement: &id011 !ruby/object:Gem::Requirement
159
173
  none: false
160
174
  requirements:
161
175
  - - "="
@@ -167,7 +181,7 @@ dependencies:
167
181
  - 0
168
182
  version: 1.3.0
169
183
  type: :development
170
- version_requirements: *id010
184
+ version_requirements: *id011
171
185
  description: Post any unfound translation keys to the Locale SaaS
172
186
  email:
173
187
  - chris@tigrish.com
@@ -184,11 +198,12 @@ files:
184
198
  - .rspec
185
199
  - .rvmrc
186
200
  - .travis.yml
201
+ - CHANGELOG.md
187
202
  - Gemfile
188
203
  - Gemfile.i18n_037
189
204
  - Gemfile.i18n_050
190
205
  - Gemfile.i18n_060
191
- - README.textile
206
+ - README.md
192
207
  - Rakefile
193
208
  - bin/localeapp
194
209
  - cucumber.yml