Я пытаюсь запустить Gitorious с помощью Rails 3, но я столкнулся с проблемой.
У меня есть эта линия в представлении.
<p><%= t("views.commits.message").call(self, tree_path(@commit.id)) %></p>
Соответствующая строка локалей выглядит следующим образом [config/locales/en.rb
]
:message => lambda { |this, path| "This is the initial commit in this repository, " +
this.link_to( "browse the initial tree state", path ) + "." }
Проблема здесь в том, что лямбда-метод не вызывается с использованием #call
в представлении, он вызывается кем-то другим, что означает, что this
не является self
, который передается ему.
this
содержит views.commits.message
, а path
содержит {:rescue_format=>:html}
.
Команда Gitorious использовала этот подход во всем приложении, что означает, что я не могу просто перевести логику в вспомогательный метод, не занимая день формальной работы.
Я провел некоторое исследование и обнаружил эту ветку о точной линии.
Это был ответ на проблему.
Похоже, это указывает на то, что в вашей системе установлен гем i18n; этот драгоценный камень несовместим с Gitorious. Удаление с помощью Rubygems должно решить проблему.
Я пытался удалить i18n
, но при запуске bundle install
просто устанавливает его снова.
Как мне решить эту проблему без рефакторинга файла с 700 строчными локалями?