jruby regex отличается от Windows от OS X? - PullRequest
0 голосов
/ 11 сентября 2010

У меня есть регулярное выражение jruby, которое я печатаю в рельсах:

@@private = /somethingthatshouldnevermatch/
def secure?
  puts "security test(#{action_name}/#{@@private}: #{@@private.match(action_name).nil?.to_s}"
  action_name =~ @@private
end

на OS X, используя WEBRick и jruby, это печатает

security test(index/(?-mix:somethingthatshouldnevermatch):

на окнах, это печатает

security test(index/?-mix:):

Я использовал warbler, чтобы превратить это в войну и поместить в каталог tomcat на windows.

что дает?

редактировать - информация о моаре

проблема оказалась настройкой среды. warbler по умолчанию «производство», а не dev. Однако я до сих пор не понимаю, почему он так себя вел.

больше подробностей - так я внедряю безопасность в моем приложении RoR. у меня есть secure? метод на ApplicationController, и переопределить значение @@private в подклассах. похоже, что при установленной рабочей среде регулярное выражение перестало инициализироваться в базовом классе. это было \\ для всех, что вызвало остальные мои проблемы.

идеи?

1 Ответ

0 голосов
/ 13 сентября 2010

Я бы посоветовал снять слои, чтобы добраться до основной причины (или исключить причину).В этом случае удалите warbler, rails и т. Д. И сделайте свою логику работоспособной в jirb (как предложил Брайан).

Я немного изменил ваш код, чтобы я мог запустить его в jirb следующим образом:

def secure?(action_name)
    puts "security test(#{action_name}/#{@@private}:#@@private.match(action_name).nil?.to_s}"
    action_name =~ @@private
end

звонит secure?("index") возвращается:

security test(index/(?-mix:somethingthatshouldnevermatch): true

Я понимаю, что вы ожидаете, а не получаете.

Если бы мне пришлось угадывать, я бы сказал, что переменная action_name - это не то, что вы ожидаете.Мои знания рельсов немного устарели, и я не вижу этой переменной, описанной в документации по Rails3 API.Возможно, это не часть формального публичного API?

Какую версию jruby и rails вы используете?Я использую jruby 1.5.1 в Windows XP.

...