Ruby on Rails
ActiveSupport
수색…
비고
ActiveSupport는 나머지 Rails 프레임 워크에서 사용하는 범용 툴의 유틸리티 보석입니다.
이러한 도구를 제공하는 주요 방법 중 하나는 Ruby의 기본 유형을 Monkeypatching하는 것입니다. 이를 핵심 확장 이라고합니다.
핵심 확장 기능 : String Access
String at
문자열 객체의 하위 문자열을 반환합니다. 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 # from
지정된 위치로부터 문자열의 끝까지 부분 문자열을 리턴합니다.
str = "hello" str.from(0) # => "hello" str.from(3) # => "lo" str.from(-2) # => "lo"
문자열 # ~
캐릭터 라인의 선두로부터 지정된 위치에 서브 캐릭터 라인을 돌려줍니다.
위치가 음수이면 문자열 끝에서부터 계산됩니다.
str = "hello" str.to(0) # => "h" str.to(3) # => "hell" str.to(-2) # => "hell"
from
과 to
는 일렬로 사용할 수 있습니다.
str = "hello" str.from(0).to(-1) # => "hello" str.from(1).to(-2) # => "ell"
String # first
최초의 캐릭터 또는 캐릭터 라인의 길이까지의 지정된 수의 캐릭터를 돌려줍니다.
str = "hello" str.first # => "h" str.first(1) # => "h" str.first(2) # => "he" str.first(0) # => "" str.first(6) # => "hello"
마지막 문자열 # 개
마지막 문자 또는 문자열의 끝에서 주어진 수의 문자를 역으로 계산합니다.
str = "hello" str.last # => "o" str.last(1) # => "o" str.last(2) # => "lo" str.last(0) # => "" str.last(6) # => "hello"
핵심 확장 기능 : 날짜 / 시간 변환 문자열
문자열 # to_time
문자열을 Time 값으로 변환합니다. form
매개 변수는 :utc
또는 :local
이며 기본값은 :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
문자열 # to_date
문자열을 Date 값으로 변환합니다.
"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
문자열 # to_datetime
문자열을 DateTime 값으로 변환합니다.
"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
핵심 확장 기능 : 문자열 제외
String # exclude?
String#include?
의 역함수 String#include?
"hello".exclude? "lo" # => false "hello".exclude? "ol" # => true "hello".exclude? ?h # => false
핵심 확장 기능 : 문자열 필터
문자열 # squish
선행 공백이나 후행 공백없이 주어진 문자열의 버전을 리턴하고, 내부의 모든 연속 공백을 단일 공백으로 결합합니다. 파괴 버전 squish!
문자열 인스턴스에서 직접 작동합니다.
ASCII 및 Unicode 공백을 모두 처리합니다.
%{ Multi-line string }.squish # => "Multi-line string" " foo bar \n \t boo".squish # => "foo bar boo"
문자열 # remove
패턴이 모두 제거 된 새 문자열을 반환합니다. 파괴 버전 remove!
주어진 문자열에서 직접 작동합니다.
str = "foo bar test" str.remove(" test") # => "foo bar" str.remove(" test", /bar/) # => "foo "
String # truncate
캐릭터 라인이 길이보다 긴 경우는 지정된 캐릭터 라인의 길이를 잘라 버린다.
'Once upon a time in a world far far away'.truncate(27) # => "Once upon a time in a wo..."
문자열이나 regexp :separator
를 전달하여 자연 휴식 시간에 자릅니다.
'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..."
문자열 # truncate_words
지정된 수의 단어 뒤에 잘린 문자열을 반환합니다.
'Once upon a time in a world far far away'.truncate_words(4) # => "Once upon a time..."
단어의 다른 구분자를 지정하기 위해 문자열이나 정규 표현식을 전달하십시오.
'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..."
마지막 문자는 :omission
문자열로 바뀝니다 (기본값은 "...").
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)') # => "And they found that many... (continued)"
문자열 # strip_heredoc
heredocs에서 들여 쓰기를 제거합니다. 가장 들여 쓰기가 적은 비어 있지 않은 줄을 찾고 그 공백을 제거합니다.
if options[:usage] puts <<-USAGE.strip_heredoc This command does such and such. Supported options are: -h This message ... USAGE end
사용자는
This command does such and such.
Supported options are:
-h This message
...
핵심 확장 기능 : String Inflection
문자열 # 복수형
문자열의 복수형을 반환합니다. 선택적으로 count
매개 변수를 사용하고 count == 1
경우 단수 형태를 반환합니다. 또한 언어 별 복수화를위한 locale
매개 변수를 허용합니다.
'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"
문자열 # singularize
문자열의 단수 형태를 반환합니다. 선택적 locale
매개 변수를 승인합니다.
'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"
문자열 # constantize
문자열에 지정된 이름으로 선언 된 상수를 찾습니다. 이름이 CamelCase에 없거나 초기화되지 않은 경우 NameError
발생시킵니다.
'Module'.constantize # => Module 'Class'.constantize # => Class 'blargle'.constantize # => NameError: wrong constant name blargle
String # safe_constantize
constantize
수행하지만 NameError
를 발생시키는 대신 nil
을 반환합니다.
'Module'.safe_constantize # => Module 'Class'.safe_constantize # => Class 'blargle'.safe_constantize # => nil
String # camelize
다음과 같은 경우에는 기본적으로 문자열을 UpperCamelCase로 변환합니다 :lower
는 lowerCamelCase로 param을 변환하므로 제공됩니다.
별칭 : camelcase
참고 : 또한 /
to ::
를 변환하여 경로를 네임 스페이스로 변환하는 데 유용합니다.
'active_record'.camelize # => "ActiveRecord" 'active_record'.camelize(:lower) # => "activeRecord" 'active_record/errors'.camelize # => "ActiveRecord::Errors" 'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"
문자열 # 제목
모든 단어를 대문자로 바꾸고 문자열의 일부 문자를 바꿔 더 멋진 제목을 만듭니다.
별칭 : titlecase
'man from the boondocks'.titleize # => "Man From The Boondocks" 'x-men: the last stand'.titleize # => "X Men: The Last Stand"
문자열 # 밑줄
밑줄이있는 소문자 형식을 문자열의 표현식에서 만듭니다. camelize
의 반대입니다.
참고 : underscore
은 또한 ::
to /
를 변경하여 네임 스페이스를 경로로 변환합니다.
'ActiveModel'.underscore # => "active_model" 'ActiveModel::Errors'.underscore # => "active_model/errors"
문자열 # dasherize
밑줄을 문자열의 대시로 대체합니다.
'puni_puni'.dasherize # => "puni-puni"
문자열 # demodulize
문자열의 상수 표현식에서 모듈 부분을 제거합니다.
'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections" 'Inflections'.demodulize # => "Inflections" '::Inflections'.demodulize # => "Inflections" ''.demodulize # => ''
문자열 # deconstantize
문자열의 상수 표현식에서 가장 오른쪽 세그먼트를 제거합니다.
'Net::HTTP'.deconstantize # => "Net" '::Net::HTTP'.deconstantize # => "::Net" 'String'.deconstantize # => "" '::String'.deconstantize # => "" ''.deconstantize # => ""
String # parameterize
문자열의 특수 문자를 '예쁜'URL의 일부로 사용할 수 있도록 대체합니다.
"Donald E. Knuth".parameterize # => "donald-e-knuth"
:preserve_case
인수를 사용하여 문자열의 문자 대 / 소문자를 유지합니다.
"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"
parameterize
의 가장 일반적인 경우는 ActiveRecord 모델의 to_param
메소드를 재정 의하여 더 자세한 URL 슬러그를 지원하는 것입니다.
class Person < ActiveRecord::Base def to_param "#{id}-#{name.parameterize}" end end Person.find(1).to_param # => "1-donald-e-knuth"
문자열 # tableize
Rails가 모델에서 테이블 이름으로 수행하는 것처럼 테이블의 이름을 만듭니다. 문자열의 마지막 단어를 Pluralizes.
'RawScaledScorer'.tableize # => "raw_scaled_scorers" 'ham_and_egg'.tableize # => "ham_and_eggs" 'fancyCategory'.tableize # => "fancy_categories"
문자열 # 분류
Rails가 테이블 이름에서 모델로하는 것과 같은 복수 테이블 이름에서 클래스 이름 문자열을 반환합니다.
'ham_and_eggs'.classify # => "HamAndEgg" 'posts'.classify # => "Post"
String # humanize
첫 단어를 대문자로 바꾸고 밑줄을 공백으로 바꾸고 _id
있으면 후행을 제거합니다.
'employee_salary'.humanize # => "Employee salary" 'author_id'.humanize # => "Author" 'author_id'.humanize(capitalize: false) # => "author" '_id'.humanize # => "Id"
문자열 # upcase_first
첫 문자 만 대문자로 변환합니다.
'what a Lovely Day'.upcase_first # => "What a Lovely Day" 'w'.upcase_first # => "W" ''.upcase_first # => ""
문자열 # foreign_key
클래스 명으로부터 외래 키 명을 작성합니다. 이름과 id
사이에 _
을 추가하지 않으려면 false
param을 전달하십시오.
'Message'.foreign_key # => "message_id" 'Message'.foreign_key(false) # => "messageid" 'Admin::Post'.foreign_key # => "post_id"