2010-11-21 7 views

Répondre

18

Wow, il y a un peu plus de ceux-ci que prévu. Voici ce que je crois être une liste complète, dans l'ordre alphabétique, avec l'exemple d'utilisation dépouillé de leur documentation. J'ai également noté si je ne pouvais pas les faire courir localement.

  1. Alchemist

    require 'alchemist' 
    Alchemist.setup 
    8.miles.to.meters 
    10.kilometers + 1.mile # 11.609344 kilometers 
    
  2. measurement

    Celui-ci apparaît sur la date, le dernier commit était il y a 5 ans, et il ne semble pas fonctionner sur 1.9.3 pour moi .

    include Measurement::Length 
    Inch.new(12).to_centimeters # => #<Measurement::Length::Centimeter:0x173c2b4 @units=30.48> 
    
  3. Phys-Units

    require "phys/units" 
    Q = Phys::Quantity 
    U = Phys::Unit 
    
    Q[1.23,'km'] + Q[4.56,'m'] #=> Phys::Quantity[1.23456,'km'] 
    Q[123,'mile']/Q[2,'hr']  #=> Phys::Quantity[61,'mile/hr'] 
    Q[61,'miles/hr'].want('m/s') #=> Phys::Quantity[27.26944,'m/s'] 
    Q[1.0,'are'] == Q[10,'m']**2 #=> true 
    
  4. Quantity

    Notez que celui-ci déclare qu'il n'est pas prêt pour la production dans le README.

    require 'quantity/all' 
    1.meter           #=> 1 meter 
    1.meter.to_feet         #=> 3.28083... foot 
    c = 299792458.meters/1.second     #=> 299792458 meter/second 
    
    newton = 1.meter * 1.kilogram/1.second**2  #=> 1 meter*kilogram/second^2 
    newton.to_feet         #=> 3.28083989501312 foot*kilogram/second^2 
    newton.convert(:feet)         #=> 3.28083989501312 foot*kilogram/second^2 
    jerk_newton = newton/1.second       #=> 1 meter*kilogram/second^3 
    jerk_newton * 1.second == newton      #=> true 
    
  5. SY

    Voir Boris Stitnickey's answer.

  6. ruby-measurement

    require 'ruby-measurement' 
    
    measurement = Measurement.parse('3 feet') # => 3.0 ft. 
    measurement.convert_to(:yards)    # => 1.0 yd. 
    measurement.convert_to(:in)    # => 36.0 in. 
    measurement.convert_to(:inches)   # => 36.0 in. 
    
    measurement1 = Measurement.parse('3 feet') # => 3.0 ft. 
    measurement2 = Measurement.parse('6 inch') # => 6.0 in. 
    measurement1 + measurement2    # => 3.5 ft. 
    
  7. ruby-units

    require 'ruby-units' 
    
    unit = Unit("mm")    # unit only (defaults to a scalar of 1) 
    unit = Unit("1 mm")    # create a simple unit 
    unit = Unit("1 kg*m^2/s^2")  # complex unit 
    
    unit1 =~ unit2     # true if units are compatible 
    unit1.compatible?(unit2)   # true if units are compatible 
    
    unit1 = unit >> "ft"    # convert to 'feet' 
    unit3 = unit1 + unit2   # resulting object will have the units of unit1 
    
    unit1 === unit2     # true if units and quantity are the same, even if 'equivalent' by <=> 
    unit.convert_to('ft')   # convert 
    (unit1 + unit2).convert_to('ft') # converts result to 'ft' 
    
  8. Units for Ruby

    require 'units' 
    
    three_meters = 3.meters 
    two_meters = 2.m 
    one_inch = 1.inch 
    
    3.meters.to_inches # => 118.1103 inch 
    10.inches.to_mm # => 254.0 millimeter 
    
  9. Unitwise

    require 'unitwise/ext' 
    
    1.yard == (1.foot * 3)      # => true 
    
    1.quart < 1.liter       # => true 
    
    2.meter + 3.inch - 1.yard     # => <Unitwise::Measurement 1.1618 meter> 
    
    1.convert_to('kg.m2/s2') == 1.joule   # => true 
    
    (20.kg * 9.8.convert_to('m/s2')).to_pound_force # => <Unitwise::Measurement 44.06255284754326 pound_force> 
    
    (300.horsepower * 60.second).to_calorie  # => <Unitwise::Measurement 3208077.8414151203 calorie> 
    
  10. Van/Unit

    Comme une autre affiche, j'ai eu du mal à obtenir ce travail. Toutefois, vous pouvez voir Jörg W Mittag's answer pour l'utilisation.

Comme l'auteur de Unitwise, il pourrait être évident que c'est mon préféré hors du groupe. Je vous encourage à vérifier au moins, cependant.

6

Essayez génial Alchemist.

......

+0

Merci et +1, semble extrêmement agréable. –

+0

Github est 404-ing. :( –

+2

Essayez http://github.com/halogenandtoast/alchemist – Psynix

1

Jetez un oeil à Tom Sawyer Van/Unit

Ceci est la page d'accueil:

require 'van/units' 
include Units 

1.mile.to(feet) 
1.acre.to(yd**2) 
1.acre.to(sq_yd) 
1.gallon.to(self.L) 
1.lb.to(kg) 
1.m.s.to(m.s) 
1.sq_mi.to(km**2) 
1.mile.to(km) 
1.usd.to(twd) 
1.bit/s + 8.bytes/s 
+0

Magnifique.C'est exactement ce que j'espérais secrètement.Merci! +1 et accepté –

0

Je ne pouvais pas obtenir Van/unités de travailler - tous il rend compte est:

/Library/Ruby/Gems/1.8/gems/vanunits-1.5.0/lib/van/units/base.rb:493:in `à ': unités incompatibles pour le fonctionnement (TypeError) de unitstest.rb: 4

Lors de l'exécution

require 'rubygems' 
require 'van/units' 
include Van::Units puts 
1.meter.to(feet) 

J'ai passé une heure de tenter de pirater, sans succès, la source de van/unités.

Le petit bijou ancien sur lequel il est basé a fonctionné de la boîte:

http://ruby-units.rubyforge.org/ruby-units/

0

vanunits semble cassé. je suggère d'essayer

rubyunits (http://ruby-units.rubyforge.org/ruby-units/)

ou

mesures (https://github.com/collectiveidea/measurement)

1

Essayez gem install sy

require 'sy' 

(5.g *    # a bullet of 5g 
    500.m.s(-1) ** 2/# flying at a speed of 500m/s has kJ energy: 
2).in(:kJ)   #=> 0.625 

require 'sy/imperial'  

1.mile.in :ft #=> 5280.0 
1.acre.in :yd² #=> 4840.0 
1.gallon.in :l #=> 4.54609 
1.lb.in :kg  #=> 0.45359237 
1.mile².in :km² #=> 2.589988110336 
SY::SPEED_OF_LIGHT.in "furlong.fortnight⁻¹" #=> 1802617499785.2544 
+1

Dans [sy] (https://github.com/boris -s/sy), je souligne l'exactitude du modèle économique et la facilité d'utilisation par rapport à la facilité d'implémentation La seule autre bibliothèque d'unités physiques hormis _sy_, dont j'aime vraiment le modèle d'objet, est [phys-units] (https: // github. com/masa16/phys-units) de [l'auteur de la célèbre narray gem] (https://github.com/masa16) –

+0

+ 1/acceptant cela car il semble significativement plus moderne/maintenu que les suggestions précédentes. –

Questions connexes