Совместно используйте глобальный регистратор среди модуля/классов

При использовании края направляющих можно полагаться , Inflector.parametrize - вот является примером из документации:

  class Person
    def to_param
      "#{id}-#{name.parameterize}"
    end
  end

  @person = Person.find(1)
  # => #

  <%= link_to(@person.name, person_path(@person)) %>
  # => Donald E. Knuth

Также, если необходимо обработать более экзотические символы, такие как диакритические знаки (Г©phГ©mГЁre) в предыдущей версии направляющих, можно использовать смесь PermalinkFu и DiacriticsFu:

DiacriticsFu::escape("éphémère")
=> "ephemere"

DiacriticsFu::escape("räksmörgås")
=> "raksmorgas"

5
задан cpjolicoeur 5 November 2009 в 16:23
поделиться

2 ответа

Добавьте константу в модуль:

module Foo
  Logger = Logger.new
  class A
  class B
  class C
  ...
  class Z
end

Затем вы можете сделать Logger.log ('бла ') в ваших классах. Поскольку мы дублируем глобальную константу Logger с помощью Foo :: Logger , это означает, что если вы хотите обратиться к классу Logger внутри Модуль Foo , вы должны использовать разрешение области: :: Logger .

10
ответ дан 13 December 2019 в 19:29
поделиться

You could create a singleton Logger for your app, so every reference will be to the same object.

require 'singleton'

class Logger
  include Singleton
end

l = Logger.instance
k = Logger.instance

puts k.object_id == l.object_id #returns true
1
ответ дан 13 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: