Class: TwitterCldr::Resources::Requirements::IcuRequirement
- Inherits:
-
Object
- Object
- TwitterCldr::Resources::Requirements::IcuRequirement
- Defined in:
- lib/twitter_cldr/resources/requirements/icu_requirement.rb
Overview
This requirement makes use of the JarClassLoader package (github.com/kamranzafar/JCL) to load ICU in an isolated environment to keep different versions of the library separate. If ICU versions are not kept separate, the one that’s first on the classpath wins, which can be surprising if you’re not expecting it. Oh, and it can break all the tests.
Constant Summary collapse
- ICU_URL =
"http://download.icu-project.org/files/icu4j/%{version}/icu4j-%{underscored_version}.jar"
- JCL_JARS =
first entry is JCL itself, other two are JCL dependencies
[ 'https://repo.maven.apache.org/maven2/org/xeustechnologies/jcl-core/2.7/jcl-core-2.7.jar', 'https://repo.maven.apache.org/maven2/org/objenesis/objenesis/2.1/objenesis-2.1.jar', 'https://repo.maven.apache.org/maven2/cglib/cglib-nodep/2.2/cglib-nodep-2.2.jar' ]
Instance Attribute Summary collapse
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #get_class(name) ⇒ Object
- #icu_source_path ⇒ Object
-
#initialize(version) ⇒ IcuRequirement
constructor
A new instance of IcuRequirement.
- #jcl_source_path_for(url) ⇒ Object
- #prepare ⇒ Object
Constructor Details
#initialize(version) ⇒ IcuRequirement
Returns a new instance of IcuRequirement.
29 30 31 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 29 def initialize(version) @version = version end |
Instance Attribute Details
#version ⇒ Object (readonly)
Returns the value of attribute version.
27 28 29 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 27 def version @version end |
Instance Method Details
#get_class(name) ⇒ Object
56 57 58 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 56 def get_class(name) class_loader.load_class(name).ruby_class end |
#icu_source_path ⇒ Object
46 47 48 49 50 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 46 def icu_source_path @source_path ||= File.join( TwitterCldr::VENDOR_DIR, "icu_v#{version}.jar" ) end |
#jcl_source_path_for(url) ⇒ Object
52 53 54 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 52 def jcl_source_path_for(url) File.join(TwitterCldr::VENDOR_DIR, File.basename(url)) end |
#prepare ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/twitter_cldr/resources/requirements/icu_requirement.rb', line 33 def prepare download_icu download_jcl JCL_JARS.each do |jcl_jar_url| require jcl_source_path_for(jcl_jar_url) end java_import 'org.xeustechnologies.jcl.JarClassLoader' class_loader.add(icu_source_path) end |