Ruby on Rails
ActiveSupport
Suche…
Bemerkungen
ActiveSupport ist ein Hilfsmittel aus Universalwerkzeugen, die vom Rest des Rails-Frameworks verwendet werden.
Eine der primären Methoden, mit denen diese Tools bereitgestellt werden, besteht darin, die systemeigenen Typen von Ruby zu überwachen. Diese werden als Core-Erweiterungen bezeichnet .
Core-Erweiterungen: String-Zugriff
String # at
Gibt einen Teilstring eines String-Objekts zurück. Gleiche Schnittstelle wie String#[]
.
str = "hello" str.at(0) # => "h" str.at(1..3) # => "ell" str.at(-2) # => "l" str.at(-2..-1) # => "lo" str.at(5) # => nil str.at(5..-1) # => ""
String # von
Gibt eine Teilzeichenfolge von der angegebenen Position bis zum Ende der Zeichenfolge zurück.
str = "hello" str.from(0) # => "hello" str.from(3) # => "lo" str.from(-2) # => "lo"
Zeichenfolge # bis
Gibt einen Teilstring vom Anfang des Strings an die angegebene Position zurück.
Wenn die Position negativ ist, wird sie vom Ende der Zeichenfolge gezählt.
str = "hello" str.to(0) # => "h" str.to(3) # => "hell" str.to(-2) # => "hell"
from
und to
kann im Tandem verwendet werden.
str = "hello" str.from(0).to(-1) # => "hello" str.from(1).to(-2) # => "ell"
String # zuerst
Gibt das erste Zeichen oder eine bestimmte Anzahl von Zeichen bis zur Länge der Zeichenfolge zurück.
str = "hello" str.first # => "h" str.first(1) # => "h" str.first(2) # => "he" str.first(0) # => "" str.first(6) # => "hello"
String # last
Gibt das letzte Zeichen oder eine bestimmte Anzahl von Zeichen ab dem Ende der Zeichenfolge zurück und zählt rückwärts.
str = "hello" str.last # => "o" str.last(1) # => "o" str.last(2) # => "lo" str.last(0) # => "" str.last(6) # => "hello"
Core-Erweiterungen: Konvertierung von Zeichenfolgen in Datum / Uhrzeit
String # to_time
Konvertiert eine Zeichenfolge in einen Zeitwert. Der form
kann entweder :utc
oder :local
, der :utc
:local
.
"13-12-2012".to_time # => 2012-12-13 00:00:00 +0100 "06:12".to_time # => 2012-12-13 06:12:00 +0100 "2012-12-13 06:12".to_time # => 2012-12-13 06:12:00 +0100 "2012-12-13T06:12".to_time # => 2012-12-13 06:12:00 +0100 "2012-12-13T06:12".to_time(:utc) # => 2012-12-13 06:12:00 UTC "12/13/2012".to_time # => ArgumentError: argument out of range
String # to_date
Konvertiert eine Zeichenfolge in einen Datumswert.
"1-1-2012".to_date # => Sun, 01 Jan 2012 "01/01/2012".to_date # => Sun, 01 Jan 2012 "2012-12-13".to_date # => Thu, 13 Dec 2012 "12/13/2012".to_date # => ArgumentError: invalid date
Zeichenfolge # bis_datetime
Konvertiert eine Zeichenfolge in einen DateTime-Wert.
"1-1-2012".to_datetime # => Sun, 01 Jan 2012 00:00:00 +0000 "01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000 "2012-12-13 12:50".to_datetime # => Thu, 13 Dec 2012 12:50:00 +0000 "12/13/2012".to_datetime # => ArgumentError: invalid date
Core-Erweiterungen: Zeichenkettenausschluss
Zeichenfolge # ausschließen?
Die Umkehrung von String#include?
"hello".exclude? "lo" # => false "hello".exclude? "ol" # => true "hello".exclude? ?h # => false
Core-Erweiterungen: String-Filter
String # squish
Gibt eine Version der angegebenen Zeichenfolge ohne führenden oder nachgestellten Leerzeichen zurück und kombiniert alle aufeinander folgenden Leerzeichen im Inneren zu einzelnen Leerzeichen. Zerstörerische Version squish!
arbeitet direkt auf der String-Instanz.
Verarbeitet sowohl ASCII- als auch Unicode-Leerzeichen.
%{ Multi-line string }.squish # => "Multi-line string" " foo bar \n \t boo".squish # => "foo bar boo"
Zeichenfolge # entfernen
Gibt eine neue Zeichenfolge zurück, wobei alle Vorkommen der Muster entfernt wurden. Zerstörende Version remove!
arbeitet direkt auf der angegebenen Zeichenkette.
str = "foo bar test" str.remove(" test") # => "foo bar" str.remove(" test", /bar/) # => "foo "
String # wird abgeschnitten
Gibt eine Kopie einer angegebenen Zeichenfolge zurück, die bei einer angegebenen Länge abgeschnitten ist, wenn die Zeichenfolge länger als die Länge ist.
'Once upon a time in a world far far away'.truncate(27) # => "Once upon a time in a wo..."
Übergeben Sie einen String oder ein reguläres :separator
um bei einem natürlichen Bruch abzuschneiden
'Once upon a time in a world far far away'.truncate(27, separator: ' ') # => "Once upon a time in a..." 'Once upon a time in a world far far away'.truncate(27, separator: /\s/) # => "Once upon a time in a..."
String # truncate_words
Gibt eine Zeichenfolge zurück, die nach einer bestimmten Anzahl von Wörtern abgeschnitten wurde.
'Once upon a time in a world far far away'.truncate_words(4) # => "Once upon a time..."
Übergeben Sie eine Zeichenfolge oder einen regulären Ausdruck, um ein anderes Trennzeichen für Wörter anzugeben
'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>') # => "Once<br>upon<br>a<br>time<br>in..."
Die letzten Zeichen werden durch die Zeichenfolge für die :omission
(Standardeinstellung "...").
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)') # => "And they found that many... (continued)"
Zeichenfolge # strip_heredoc
Streifen Einrückung in Heredocs. Sucht nach der am wenigsten eingerückten, nicht leeren Zeile und entfernt diese Menge an führendem Leerzeichen.
if options[:usage] puts <<-USAGE.strip_heredoc This command does such and such. Supported options are: -h This message ... USAGE end
Der Benutzer würde sehen
This command does such and such.
Supported options are:
-h This message
...
Core-Erweiterungen: String Flexion
String # pluralize
Gibt die Pluralform der Zeichenfolge zurück. Nimmt optional einen count
Parameter an und gibt die Singularform zurück, wenn count == 1
. Akzeptiert auch einen locale
Parameter für die sprachspezifische Pluralisierung.
'post'.pluralize # => "posts" 'octopus'.pluralize # => "octopi" 'sheep'.pluralize # => "sheep" 'words'.pluralize # => "words" 'the blue mailman'.pluralize # => "the blue mailmen" 'CamelOctopus'.pluralize # => "CamelOctopi" 'apple'.pluralize(1) # => "apple" 'apple'.pluralize(2) # => "apples" 'ley'.pluralize(:es) # => "leyes" 'ley'.pluralize(1, :es) # => "ley"
String # singularize
Gibt die Singularform der Zeichenfolge zurück. Akzeptiert einen optionalen locale
Parameter.
'posts'.singularize # => "post" 'octopi'.singularize # => "octopus" 'sheep'.singularize # => "sheep" 'word'.singularize # => "word" 'the blue mailmen'.singularize # => "the blue mailman" 'CamelOctopi'.singularize # => "CamelOctopus" 'leyes'.singularize(:es) # => "ley"
String # konstante
Versucht, eine deklarierte Konstante mit dem in der Zeichenfolge angegebenen Namen zu finden. Ein NameError
wenn der Name nicht in CamelCase enthalten ist oder nicht initialisiert ist.
'Module'.constantize # => Module 'Class'.constantize # => Class 'blargle'.constantize # => NameError: wrong constant name blargle
String # safe_constantize
Führt eine constantize
, gibt jedoch nil
anstatt NameError
.
'Module'.safe_constantize # => Module 'Class'.safe_constantize # => Class 'blargle'.safe_constantize # => nil
Zeichenfolge # camelize
Konvertiert Strings standardmäßig in UpperCamelCase, wenn :lower
als Parameter angegeben wird, stattdessen in lowerCamelCase.
Alias: camelcase
Hinweis: konvertiert auch /
in ::
was zum Konvertieren von Pfaden in Namespaces nützlich ist.
'active_record'.camelize # => "ActiveRecord" 'active_record'.camelize(:lower) # => "activeRecord" 'active_record/errors'.camelize # => "ActiveRecord::Errors" 'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
String # titleize
Schreibt alle Wörter groß und ersetzt einige Zeichen in der Zeichenfolge, um einen schöneren Titel zu erzeugen.
Alias: titlecase
'man from the boondocks'.titleize # => "Man From The Boondocks" 'x-men: the last stand'.titleize # => "X Men: The Last Stand"
String # unterstreichen
Erzeugt aus dem Ausdruck in der Zeichenfolge ein unterstrichenes, kleingeschriebenes Formular. Die Umkehrung von camelize
.
Hinweis: underscore
ändern auch ::
in /
, um Namespaces in Pfade umzuwandeln.
'ActiveModel'.underscore # => "active_model" 'ActiveModel::Errors'.underscore # => "active_model/errors"
String # dasherize
Ersetzt Unterstriche durch Striche in der Zeichenfolge.
'puni_puni'.dasherize # => "puni-puni"
String # demodulize
Entfernt den Modulteil aus dem konstanten Ausdruck in der Zeichenfolge.
'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections" 'Inflections'.demodulize # => "Inflections" '::Inflections'.demodulize # => "Inflections" ''.demodulize # => ''
String # dekonstantisieren
Entfernt das äußerste rechte Segment aus dem konstanten Ausdruck in der Zeichenfolge.
'Net::HTTP'.deconstantize # => "Net" '::Net::HTTP'.deconstantize # => "::Net" 'String'.deconstantize # => "" '::String'.deconstantize # => "" ''.deconstantize # => ""
String # parametrisieren
Ersetzt Sonderzeichen in einer Zeichenfolge, sodass sie als Teil einer 'hübschen' URL verwendet werden kann.
"Donald E. Knuth".parameterize # => "donald-e-knuth"
Behalten Sie die Groß- und Kleinschreibung der Zeichen in einer Zeichenfolge mit dem Argument :preserve_case
.
"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"
Ein sehr häufiger Anwendungsfall für die parameterize
ist das Überschreiben der to_param
Methode eines ActiveRecord-Modells, um mehr beschreibende URL-Slugs zu unterstützen.
class Person < ActiveRecord::Base def to_param "#{id}-#{name.parameterize}" end end Person.find(1).to_param # => "1-donald-e-knuth"
String # tableize
Erzeugt den Namen einer Tabelle, wie es Rails für Modelle mit Tabellennamen tut. Pluralisiert das letzte Wort in der Zeichenfolge.
'RawScaledScorer'.tableize # => "raw_scaled_scorers" 'ham_and_egg'.tableize # => "ham_and_eggs" 'fancyCategory'.tableize # => "fancy_categories"
String # klassifizieren
Gibt eine Klassennamenzeichenfolge aus einem Mehrfach-Tabellennamen zurück, wie es Rails für Tabellennamen für Modelle tut.
'ham_and_eggs'.classify # => "HamAndEgg" 'posts'.classify # => "Post"
String # humanize
Schreibt das erste Wort in _id
, verwandelt Unterstriche in Leerzeichen und _id
ggf. eine nachgestellte _id
.
'employee_salary'.humanize # => "Employee salary" 'author_id'.humanize # => "Author" 'author_id'.humanize(capitalize: false) # => "author" '_id'.humanize # => "Id"
String # upcase_first
Wandelt nur das erste Zeichen in Großbuchstaben um.
'what a Lovely Day'.upcase_first # => "What a Lovely Day" 'w'.upcase_first # => "W" ''.upcase_first # => ""
String # foreign_key
Erstellt einen Fremdschlüsselnamen aus einem Klassennamen. Übergeben Sie false
param, um das Hinzufügen von _
zwischen Name und id
zu deaktivieren.
'Message'.foreign_key # => "message_id" 'Message'.foreign_key(false) # => "messageid" 'Admin::Post'.foreign_key # => "post_id"