Я понимаю, что компилятору нужно во время компиляции знать во время компиляции, но почему не Foo.BA_ constant?
blockquote>Пока они постоянны с точки зрения любого кода, который выполняется после того, как поля были инициализированы, они не являются константой времени компиляции в смысле, требуемом JLS; см. §15.28 Константные выражения для определения того, что требуется для постоянного выражения. Это означает §4.12.4 Конечные переменные , которые определяют «постоянную переменную» следующим образом:
Мы называем переменную примитивного типа или типа String, то есть окончательный и инициализированный с помощью выражения константы времени компиляции (§15.28) постоянной переменной. Независимо от того, является ли переменная постоянной или нет, она может иметь последствия для инициализации класса (§12.4.1), бинарной совместимости (§13.1, §13.4.9) и определенного назначения (§16).
blockquote >В вашем примере переменные Foo.BA * не имеют инициализаторов и, следовательно, не квалифицируются как «постоянные переменные». Исправить это просто; измените объявления переменных Foo.BA * на наличие инициализаторов, которые являются постоянными выражениями времени компиляции.
В конкретном случае действия Rails (в отличие от общего случая получения имени текущего метода) вы можете использовать params [: action]
В качестве альтернативы вы можете захотеть чтобы изучить возможность настройки формата журнала Rails, чтобы имя действия / метода было включено в формат, а не в ваше сообщение журнала.
Ответ mikej был очень точным и полезным, но я также хотел знать, как получить текущее имя метода в рельсах.
выяснил, что это возможно с помощью self.current_method
легко найти на http://www.ruby-forum.com/topic/75258