Kiel etendi rubenon per ActiveSupport

Kiam Rails disvolviĝis la kerna skipo havis trajtojn ili esperis ke Rails enhavis. Do ili etendis la bazajn objektojn kaj metis la etendojn en projekton nomitan ActiveSupport. Ĉi tie mi montros al vi kiel uzi ĝin en kaj ekster Rails.

Kiel uzi ĝin ekster Rails

Se vi volas uzi la projekton ekster Rails la skipo penis faciligi la enmetado. Oni bezonas postuli la bazan nomejon kaj poste vi povas enmeti tiom kiom vi volas.

Por agordi la projekton:

require 'active_support'

De tie vi povas elekti enmeti funkcion, funkciojn por objecto, ĉion de core_ext, aŭ la tuton de ActiveSupport.

Ekzemple por la .blank? metodo vi povas uzi

require 'active_support'
require 'active_support/core_ext/object/blank'

Por ĉiu etenda funkcio de object vi povas require object

require 'active_support'
require 'active_support/core_ext/object'

Aŭ por la tuto de core-ext

require 'active_support'
require 'active_support/core_ext

kaj fine por la tuta de ActiveSupport

require 'active_support'
require 'active_support/all
Specimeno de funkcioj

Sube estas helpemaj funkcioj laŭ objekto

Je Object (objekto)
  • .blank? ĉu la objekto estas nilfalse
  • .present? la malo de .blank?
  • .presence donas la objekto se ĝi estas .present? alie ĝi donas nil uzinda kiel uzanto.nomo.presence || 'Zam'
Je String (ĉeno)
  • .inquery aldonas ĉu-funkcio por egaleco
  • "zam".inquery.zam? => true
  • "aktiva".inquery.neaktiva? => false
  • to_date (al_dato), to_time (al_tempo), to_datetime (al_dattempo) helpemaj tegfunkcioj por Date._parse
  • "2015-12-15".to_date # => Tue, 15 Dec 2015
  • "2015-12-15 05:34:33".to_time # => 2015-12-15 05:34:33 -0600
  • "2015-12-15 05:34:33".to_datetime # => Tue, 15 Dec 2015 05:34:33 +0000
  • to_time ankaŭ ricevas simbolon por la horzono (loka aŭ universala)
  • "2010-07-27 23:42:00".to_time(:local) # => 2010-07-27 23:42:00 -0500
  • "2010-07-27 23:42:00".to_time(:utc) # => 2010-07-27 23:42:00 UTC
Je Numeric (nombra)
  • bytes, kilobytes, megabytes, gigabytes, terabytes, petabytes, exabytes ĉiu konvertas al la nombro da bajtoj
  • 2.kilobytes # => 2048
  • 3.14.gigabytes # => 3371549327.36
  • Ebligas kalkulon de tempo el nombroj
  • 1.month.from_now (1.monato.ekde_nun)
  • 2.years.ago (1.jaroj.antaŭe)
  • (3.months + 2.years).from_now ((3.monatoj + 2.jaron).ekde_nun
  • Formigado per etentado de .to_s
  • Monunuo: 34.22.to_s(:currency) # => "$34.22"
  • Elcentaĵo: 34.to_s(:percentage) # => "34.000%"
    • 34.to_s(:percentage, precision: 0) # => "34%"
Je Enumerable (listigebla)
  • .sum (sumo)
  • [1, 2, 3].sum # => 6
  • (1..50).sum # => 1275
  • [].sum => 0 sed
  • [].sum(1) => `
  • .index_by kreas tabelon kie la ŝlosilo estas de la kodbloko
  • %w(tablo seĝo lumilo).index_by{|n| n.length * 3} # => {15=>"tablo", 12=>"seĝo", 18=>"lumilo"}
  • aŭ se nur estas metodo sur la objektoj vi povas uzi la & truko %w(tablo seĝo lumilo).index_by(&:length) # => {5=>"tablo", 4=>"seĝo", 6=>"lumilo"}
  • .many? (multaj) ĉu funkcio por vidi ĉu estas pli ol unu
    • [].many? # => false
    • [1].many? # => false
    • [1,2].many? # => true
    • kun kodbloko (0..4).many?(&:nonzero?) # => true
Je Range (intervalo)
  • .include? (enhavas) kontrolos ĉu la intervalo enhavas objekton aŭ alian intervalon
  • (1..5).include?(Math::PI) # => true
  • (1..10).include?(3..5) # => true
  • (1..10).include?(0..4) # => false
Fino

Ĉi tio nur estas specimeno de la funkcioj haveblas per ActiveSupport. La resto vi povas prilegi ĉe la gvidlibro de Rails, tamen en la angla. Ĝuu