Articles of ruby

Expresiones regulares con validaciones en RoR 4

Hay el siguiente código: class Product < ActiveRecord::Base validates :title, :description, :image_url, presence: true validates :price, numericality: {greater_than_or_equal_to: 0.01} validates :title, uniqueness: true validates :image_url, allow_blank: true, format: { with: %r{\.(gif|jpg|png)$}i, message: 'URL must point to GIT/JPG/PNG pictures' } end Funciona, pero cuando bash probarlo con la “prueba de rake”, captaré este mensaje: rake aborted! […]

Matriz multidimensional de Ruby

Tal vez sea solo mi falta de habilidades para encontrar cosas aquí lo que es el problema, pero no puedo encontrar nada sobre cómo crear matrices multidimensionales en Ruby. ¿Podría alguien darme un ejemplo de cómo hacerlo?

No entiendo el scope local de ruby

En este ejemplo, def foo(x) if(x > 5) bar = 100 end puts bar end Entonces foo (6) Salidas: 100 y foo (3) no producen nada. Sin embargo, si cambié la definición a def foo(x) if(x > 5) bar = 100 end puts bob end Aparece un error de “variable o método local indefinido”. ¿Entonces […]

Cuándo usar `self.foo` en lugar de` foo` en los métodos de Ruby

Esto no es específico de Rails: solo estoy usando Rails como ejemplo. Tengo un modelo en Rails: class Item < ActiveRecord::Base def hello puts "Hello, #{self.name}" end end (Digamos que el modelo del Item (clase) tiene un método llamado name ). ¿Cuándo debo usar self.name y cuándo puedo usar el name ? (Ej .: #{name} […]

¿Cómo fuerzo a RAILS_ENV en una tarea de rake?

Tengo esta pequeña tarea de rake: namespace :db do namespace :test do task :reset do ENV[‘RAILS_ENV’] = “test” Rake::Task[‘db:drop’].invoke Rake::Task[‘db:create’].invoke Rake::Task[‘db:migrate’].invoke end end end Ahora, cuando ejecuto, ignorará los RAILS_ENV que traté de codificar. ¿Cómo hago que esta tarea funcione como esperaba

¿Mezcla palabra clave con argumentos regulares en Ruby?

Ruby 2.0 admite argumentos de palabra clave. Me preguntaba, ¿cuáles son las ‘reglas’ para mezclar regularmente con argumentos de palabra clave? Algo como esto no funcionaría: def some_method(a: ‘first’, b: ‘second’, c) [a, b, c] end pero esto: def some_method(c, a: ‘first’, b: ‘second’) [a, b, c] end Entonces, ¿por qué funciona poner un argumento […]

¿Cuáles son las restricciones para los nombres de método en Ruby?

Por ejemplo, encontré el bundler? nombre del método bundler? en el siguiente fragmento, y no sé si el ? personaje es una palabra clave especializada o solo parte del nombre del método. # This is a predicate useful for the doc:guides task of applications. def bundler? # Note that rake sets the cwd to the […]

Ruby 1.9: ¿cómo puedo usar cadenas de multibyte en mayúsculas y minúsculas?

Así que matz tomó la decisión de mantener upcase y downcase limitado a /[AZ]/i en ruby ​​1.9.1. ActiveSupport::Multibyte tiempo, ActiveSupport::Multibyte ha tenido un gran caso de i18n en jigger en ruby ​​1.8.x a través de String#mb_chars . Sin embargo, cuando se prueba bajo ruby ​​1.9.1, parece que no funciona. Aquí hay un script de prueba […]

Concatenación de cadenas vs. interpolación en Ruby

Estoy empezando a aprender Ruby (progtwigción por primera vez), y tengo una pregunta sintáctica básica con respecto a las variables y varias formas de escribir código. El progtwig “Aprende a progtwigr” de Chris Pine me enseñó a escribir un progtwig básico como este … num_cars_again= 2 puts ‘I own ‘ + num_cars_again.to_s + ‘ cars.’ […]

¿Cómo funciona la asignación object_id?

Estoy jugando con .object_id de Ruby y noté que, en varias sesiones secuenciales de irb, obtengo estos resultados idénticos: false.object_id // 0 true.object_id // 2 nil.object_id // 4 100.object_id // 201 De hecho, el object_id de cada entero parece ser ((valor * 2) + 1). Por otro lado, el object_id de una cadena dada nunca […]