2012-11-15 3 views
0

루비의 데이터 정렬이 로캘을 인식하지 못하기 때문에 발생하는 rubyrep 복제 라이브러리의 버그를 추적했습니다. 적어도 en_US.UTF-8 로켈 (및 C 로켈)의 경우 올바르지 않은 정렬시 '-'가 'a'앞에옵니다.jruby의 로케일 인식 조합

지금 데이터베이스는 적절한 로케일 인식 방식으로 이러한 문자열을 정렬하지만 루비는 정렬하지 않습니다.

jruby 초심자가 로케일 인식 문자열 비교를 사용하여이 코드를 패치 할 수있는 가장 쉬운 방법은 무엇입니까? 필요한 경우 로캘을 코드로 하드 ​​코딩하면됩니다.

+0

나중에 참조 할 수 있도록 banziman이 지적한대로 jruby에서 해당 라이브러리를 사용할 수있었습니다. 특정 칼럼에 대한 포스트그레스의 대조 규칙을 변경할 수도 있습니다. 그리고 만약 당신이 'C'로 설정하면 그 규칙은 루비의 디폴트 <=> 연산자의 규칙과 일치합니다. –

답변

1

용서 내 곁들여 (이 나는 JRuby를 포기하고 그러나 나는 내가 속도 우위를 유지할 수있는 JRuby에서의 방법이 바라고 있어요 this lib 디렉토리를 사용하는 쉬운 방법이없는 경우),하지만 어떻게 했나요 그림 그 -이후에 UTF-8로a으로 정렬해야합니까? 이 ASCII 호환 블록에서는 최소한 a 앞에 -이 올 것으로 예상됩니다.

JRuby는 MRI가 작동하는 방식과 호환되도록 노력하므로 MRI의 작동 방식에 관계없이 JRuby가 어떻게 작동 할 것입니다.

또한 JRuby에는 FFI가 내장되어 있으므로 언급 한 라이브러리를 자유롭게 사용할 수 있습니다.

+0

그것 자체는 아니지만 문자열에서 정렬 순서가 다릅니다 (어떤 조합 규칙이 여기에 적용되는지는 잘 모르겠지만 나도 놀랐습니다). "l-foobar"및 "lafoobar"라는 두 문자열을 사용하면 C 로켈은 "l-foobar"를 먼저 정렬하고 "en_US.UTF8"로켈은 그 반대로 정렬합니다. –

+0

또한 JRuby에 FFI가 내장되어 있음을 지적 해 주셔서 감사합니다. 그 사실을 알지 못해 매우 도움이됩니다. –