route_translator 4.1.0 → 4.2.1

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/LICENSE +21 -0
  4. data/README.md +231 -0
  5. data/lib/route_translator/extensions/action_controller.rb +5 -2
  6. data/lib/route_translator/extensions/mapper.rb +5 -5
  7. data/lib/route_translator/extensions/route_set.rb +1 -1
  8. data/lib/route_translator/host.rb +4 -5
  9. data/lib/route_translator/translator.rb +17 -13
  10. data/lib/route_translator/version.rb +1 -1
  11. data/lib/route_translator.rb +1 -1
  12. metadata +92 -59
  13. data/test/dummy/Rakefile +0 -7
  14. data/test/dummy/app/controllers/dummy_controller.rb +0 -11
  15. data/test/dummy/app/views/dummy/show.html.erb +0 -1
  16. data/test/dummy/config/application.rb +0 -21
  17. data/test/dummy/config/boot.rb +0 -0
  18. data/test/dummy/config/environment.rb +0 -5
  19. data/test/dummy/config/initializers/secret_token.rb +0 -7
  20. data/test/dummy/config/initializers/session_store.rb +0 -8
  21. data/test/dummy/config/locales/all.yml +0 -15
  22. data/test/dummy/config/routes.rb +0 -12
  23. data/test/dummy/config.ru +0 -4
  24. data/test/dummy/dummy_mounted_app.rb +0 -5
  25. data/test/dummy/script/rails +0 -6
  26. data/test/host_test.rb +0 -108
  27. data/test/integration/generated_path_test.rb +0 -37
  28. data/test/integration/host_locales_test.rb +0 -59
  29. data/test/integration/routing_test.rb +0 -22
  30. data/test/integration/thread_safety_test.rb +0 -16
  31. data/test/locales/routes.yml +0 -13
  32. data/test/routing_test.rb +0 -664
  33. data/test/support/assertion_helper.rb +0 -27
  34. data/test/support/configuration_helper.rb +0 -52
  35. data/test/support/i18n_helper.rb +0 -24
  36. data/test/support/integration_helper.rb +0 -6
  37. data/test/support/routes_helper.rb +0 -60
  38. data/test/test_helper.rb +0 -32
data/test/dummy/Rakefile DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env rake
2
- # Add your own tasks in files placed in lib/tasks ending in .rake,
3
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
-
5
- require File.expand_path('../config/application', __FILE__)
6
-
7
- Dummy::Application.load_tasks
@@ -1,11 +0,0 @@
1
- class DummyController < ActionController::Base
2
-
3
- def dummy
4
- render :text => I18n.locale
5
- end
6
-
7
- def show
8
- # Pass
9
- end
10
-
11
- end
@@ -1 +0,0 @@
1
- <%= link_to "Show [#{I18n.locale}]", show_path %>
@@ -1,21 +0,0 @@
1
-
2
- require 'i18n'
3
- begin
4
- I18n.enforce_available_locales = true
5
- rescue NoMethodError
6
- end
7
-
8
- require "action_controller/railtie"
9
- begin
10
- require "active_resource/railtie"
11
- rescue LoadError
12
- end
13
- require "route_translator"
14
-
15
- module Dummy
16
- class Application < Rails::Application
17
- # config.logger = Logger.new(File.new("/dev/null", 'w'))
18
- config.active_support.deprecation = :log
19
- config.eager_load = false
20
- end
21
- end
File without changes
@@ -1,5 +0,0 @@
1
- # Load the rails application
2
- require File.expand_path('../application', __FILE__)
3
-
4
- # Initialize the rails application
5
- Dummy::Application.initialize!
@@ -1,7 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Your secret key for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
5
- # Make sure the secret is at least 30 characters and all random,
6
- # no regular words or you'll be exposed to dictionary attacks.
7
- Dummy::Application.config.secret_token = '831d41b30a9e2d662a2d0c6f1f05b5f0b7db5d59446a18686b122e623e10bc5462eb48f9c9245f3e8b00cbe0cf007786482ba7012331de8f1bde93985c4d9686'
@@ -1,8 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- Dummy::Application.config.session_store :cookie_store, :key => '_dummy_session'
4
-
5
- # Use the database for sessions instead of the cookie-based default,
6
- # which shouldn't be used to store highly confidential information
7
- # (create the session table with "rails generate session_migration")
8
- # Dummy::Application.config.session_store :active_record_store
@@ -1,15 +0,0 @@
1
- # Sample localization file for English. Add more files in this directory for other locales.
2
- # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
-
4
- en:
5
- routes:
6
- dummy: dummy
7
- show: show
8
- es:
9
- routes:
10
- dummy: dummy
11
- show: mostrar
12
- ru:
13
- routes:
14
- dummy: манекен
15
- show: показывать
@@ -1,12 +0,0 @@
1
- require File.join(Dummy::Application.root, 'dummy_mounted_app.rb')
2
-
3
- Dummy::Application.routes.draw do
4
- localized do
5
- get 'dummy', :to => 'dummy#dummy'
6
- get 'show', :to => 'dummy#show'
7
- end
8
-
9
- root :to => 'dummy#dummy'
10
-
11
- mount DummyMountedApp.new => '/dummy_mounted_app'
12
- end
data/test/dummy/config.ru DELETED
@@ -1,4 +0,0 @@
1
- # This file is used by Rack-based servers to start the application.
2
-
3
- require ::File.expand_path('../config/environment', __FILE__)
4
- run Dummy::Application
@@ -1,5 +0,0 @@
1
- class DummyMountedApp
2
- def call(env)
3
- [200, {"Content-Type" => "text/plain"}, ["Good"]]
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
-
4
- APP_PATH = File.expand_path('../../config/application', __FILE__)
5
- require File.expand_path('../../config/boot', __FILE__)
6
- require 'rails/commands'
data/test/host_test.rb DELETED
@@ -1,108 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path('../test_helper', __FILE__)
3
-
4
- class TestHostsFromLocale < MiniTest::Unit::TestCase
5
-
6
- include RouteTranslator::ConfigurationHelper
7
- include RouteTranslator::I18nHelper
8
- include RouteTranslator::RoutesHelper
9
-
10
- def setup
11
- setup_config
12
- setup_i18n
13
-
14
- config = host_locales_config_hash
15
- config['*.something.es'] = :es
16
- config['*.ru.subdomain.domain.*'] = :ru
17
- config['russia.something.net'] = :ru
18
- config['*.com'] = :en
19
-
20
- config_host_locales(config)
21
- end
22
-
23
- def teardown
24
- teardown_i18n
25
- teardown_config
26
- end
27
-
28
- def test_wildcard_at_beginning_matches
29
- assert_equal :en, RouteTranslator::Host.locale_from_host('something.com')
30
- end
31
-
32
- def test_wildcard_at_beginning_with_subdomain_matches
33
- assert_equal :en, RouteTranslator::Host.locale_from_host('www.domain.com')
34
- end
35
-
36
- def test_wildcard_at_beginning_without_subdomain_matches
37
- assert_equal :en, RouteTranslator::Host.locale_from_host('domain.com')
38
- end
39
-
40
- def test_wildcard_at_end_with_subdomain_matches
41
- assert_equal :es, RouteTranslator::Host.locale_from_host('www.something.es')
42
- end
43
-
44
- def test_wildcard_at_end_without_subdomain_matches
45
- assert_equal :es, RouteTranslator::Host.locale_from_host('something.es')
46
- end
47
-
48
- def test_no_wildcard_matches
49
- assert_equal :ru, RouteTranslator::Host.locale_from_host('russia.something.net')
50
- end
51
-
52
- def test_multiple_wildcard_matches
53
- assert_equal :ru, RouteTranslator::Host.locale_from_host('www.ru.subdomain.domain.biz')
54
- end
55
-
56
- def test_case_is_ignored
57
- assert_equal :es, RouteTranslator::Host.locale_from_host('www.SoMeThInG.ES')
58
- end
59
-
60
- def test_precedence_if_more_than_one_match
61
- config = host_locales_config_hash
62
- config['russia.*'] = :ru
63
- config['*.com'] = :en
64
- config_host_locales(config)
65
- assert_equal :ru, RouteTranslator::Host.locale_from_host('russia.com')
66
-
67
- config = host_locales_config_hash
68
- config['*.com'] = :en
69
- config['russia.*'] = :ru
70
- config_host_locales(config)
71
- assert_equal :en, RouteTranslator::Host.locale_from_host('russia.com')
72
- end
73
-
74
- def test_default_locale_if_no_matches
75
- assert_equal I18n.default_locale, RouteTranslator::Host.locale_from_host('nomatches.co.uk')
76
- end
77
-
78
- def test_readme_examples_work
79
- config = host_locales_config_hash
80
- config['*.es'] = :es # matches ['domain.es', 'subdomain.domain.es', 'www.long.string.of.subdomains.es'] etc.
81
- config['ru.wikipedia.*'] = :ru # matches ['ru.wikipedia.org', 'ru.wikipedia.net', 'ru.wikipedia.com'] etc.
82
- config['*.subdomain.domain.*'] = :ru # matches ['subdomain.domain.org', 'www.subdomain.domain.net'] etc.
83
- config['news.bbc.co.uk'] = :en # matches ['news.bbc.co.uk'] only
84
-
85
- config_host_locales(config)
86
-
87
- examples_1 = ['domain.es', 'subdomain.domain.es', 'www.long.string.of.subdomains.es']
88
- examples_2 = ['ru.wikipedia.org', 'ru.wikipedia.net', 'ru.wikipedia.com']
89
- examples_3 = ['subdomain.domain.org', 'www.subdomain.domain.net']
90
- examples_4 = ['news.bbc.co.uk']
91
-
92
- examples_1.each do |domain|
93
- assert_equal :es, RouteTranslator::Host.locale_from_host(domain)
94
- end
95
-
96
- examples_2.each do |domain|
97
- assert_equal :ru, RouteTranslator::Host.locale_from_host(domain)
98
- end
99
-
100
- examples_3.each do |domain|
101
- assert_equal :ru, RouteTranslator::Host.locale_from_host(domain)
102
- end
103
-
104
- examples_4.each do |domain|
105
- assert_equal :en, RouteTranslator::Host.locale_from_host(domain)
106
- end
107
- end
108
- end
@@ -1,37 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path('../../test_helper', __FILE__)
3
-
4
- class GeneratedPathTest < integration_test_suite_parent_class
5
-
6
- include RouteTranslator::ConfigurationHelper
7
-
8
- def test_path_generated
9
- get '/show'
10
- assert_response :success
11
- assert_tag :tag => "a", :attributes => { :href => "/show" }
12
- end
13
-
14
- def test_path_translated
15
- get '/es/mostrar'
16
- assert_response :success
17
- assert_tag :tag => "a", :attributes => { :href => "/es/mostrar" }
18
- end
19
-
20
- def test_path_translated_after_force
21
- config_force_locale true
22
-
23
- get '/es/mostrar'
24
- assert_response :success
25
- assert_tag :tag => "a", :attributes => { :href => "/es/mostrar" }
26
- end
27
-
28
- def test_path_translated_while_generate_unlocalized_routes
29
- config_default_locale_settings 'en'
30
- config_generate_unlocalized_routes true
31
-
32
- get '/es/mostrar'
33
- assert_response :success
34
- assert_tag :tag => "a", :attributes => { :href => "/es/mostrar" }
35
- end
36
-
37
- end
@@ -1,59 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path('../../test_helper', __FILE__)
3
-
4
- class HostLocalesTest < integration_test_suite_parent_class
5
-
6
- include RouteTranslator::ConfigurationHelper
7
-
8
- def setup
9
- config_host_locales('*.es' => 'es', 'ru.*.com' => 'ru')
10
- Dummy::Application.reload_routes!
11
- end
12
-
13
- def teardown
14
- config_host_locales({})
15
- Dummy::Application.reload_routes!
16
- end
17
-
18
-
19
- def test_root_path
20
- ## root of es com
21
- host! 'www.testapp.es'
22
- get '/'
23
- assert_equal 'es', @response.body
24
- assert_response :success
25
-
26
- ## root of ru com
27
- host! 'ru.testapp.com'
28
- get '/'
29
- assert_equal 'ru', @response.body
30
- assert_response :success
31
- end
32
-
33
- def test_explicit_path
34
- ## native es route on es com
35
- host! 'www.testapp.es'
36
- get '/dummy'
37
- assert_equal 'es', @response.body
38
- assert_response :success
39
-
40
- ## ru route on es com
41
- host! 'www.testapp.es'
42
- get URI.escape('/ru/манекен')
43
- assert_equal 'ru', @response.body
44
- assert_response :success
45
-
46
- ## native ru route on ru com
47
- host! 'ru.testapp.com'
48
- get URI.escape('/манекен')
49
- assert_equal 'ru', @response.body
50
- assert_response :success
51
-
52
- ## es route on ru com
53
- host! 'ru.testapp.com'
54
- get '/es/dummy'
55
- assert_equal 'es', @response.body
56
- assert_response :success
57
- end
58
-
59
- end
@@ -1,22 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path('../../test_helper', __FILE__)
3
-
4
- class RoutingTest < integration_test_suite_parent_class
5
-
6
- include RouteTranslator::ConfigurationHelper
7
-
8
- def test_set_locale_from_params
9
- config_default_locale_settings 'en'
10
-
11
- get '/es/dummy'
12
- assert_equal 'es', @response.body
13
- assert_response :success
14
- end
15
-
16
- def test_mounted_apps_work_with_correct_path
17
- get '/dummy_mounted_app'
18
- assert_equal "Good", @response.body
19
- assert_response :success
20
- end
21
-
22
- end
@@ -1,16 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path('../../test_helper', __FILE__)
3
-
4
- class ThreadSafetyTest < integration_test_suite_parent_class
5
-
6
- include RouteTranslator::ConfigurationHelper
7
-
8
- def test_i18n_locale_thread_safe
9
- config_default_locale_settings 'en'
10
- get '/es/dummy'
11
- assert_equal 'es', @response.body
12
-
13
- assert_equal :en, I18n.locale
14
- end
15
-
16
- end
@@ -1,13 +0,0 @@
1
- es:
2
- routes:
3
- people: gente
4
- products: productos
5
- tr_param: tr_parametro
6
- blank: ""
7
-
8
- ru:
9
- routes:
10
- people: люди
11
-
12
- en:
13
- m: m #Adding this here just to have en in I18n.available_locales