0

현재 Rails 응용 프로그램에서 작업 중이며 최근에는 서버의 서브 디렉토리로 이동하는 기능을 추가하는 요청을 받았습니다. 즉 각 LINKsmb://my/server/directory/sub-directory서버의 하위 디렉토리에 대한 전체 경로 만들기

에 문제가 당신을 데려 갈 것이다 : directory 모든 하위 디렉토리를 포함하는 대규모 디렉토리입니다 말한다. 제가 의미하는 것을 설명하기위한 몇 가지 예가 있습니다.

나는 3 개의 자동차 기록이 있습니다. 하위 디렉토리는 두 속성의 연결로 구성되며 carA.number의 첫 3 자리 (carA.number.split('-')[0]과 같은 형식이며 형식이 ### - #### - #이므로) 하이픈과 설명이됩니다. carA.description_of_car과 같은 것). 전체 경로는 다음과 같을 것입니다 smb://my/server/directory/carA.number.split('-')[0] - carA.description_of_car

매번 "보장"될 경로를 모르면 올바른 하위 디렉토리에 대한 링크를 가리키는 것을 어떻게 보장 할 수 있습니까? description 속성은 거의 모든 것이 될 수 있고 서브 디렉토리 설명은 동일하므로 여분의 공백이나 다른 것이있을 수 있습니다. 예를 들어, carA의 설명은 "RED, CAR"일 수 있지만 하위 디렉토리는 "RED CAR"이므로 쉼표가 누락 된 경우 경로가 일치하지 않으므로 직접 링크가 끊어집니다.

지금까지 내가 시도한 것은 이것입니다.

base_url = "smb://my/server/directory/" 
    car_prefix = @car.number.split('-')[0] 
    car_suffix = "-" + @car.description_of_car.split(' ')[0] 

    @full_url = base_url + part_prefix + part_suffix 

분명히 정확하지는 않습니다. 내가 뭘하고 싶은지, URL에 와일드 카드를 추가하여 적어도 처음 3 개의 숫자가 올바른 하위 폴더를 찾습니다 (항상 올바른 형식으로 표시됨). ### - ### #)

편집 : @full_url = "SMB : // 내/서버/디렉토리/123- *"자동차 번호의 하위 폴더를 일치합니다 123-RED CAR

건배 이런 일.

+0

당신의 레일이 디렉토리가 존재하는 동일한 호스트에서 실행되는 앱 관련 있습니까? –

+0

그렇습니다. 그러나 데이터베이스가 SQL-Server db에서 로컬 postgreSQL db로 복사되어 Rails와 잘 작동합니다. 응용 프로그램은 디렉토리와 같은 호스트에서 실행됩니다 ... 나는 믿습니다 ... –

답변

0

그것은 다소 복잡하지만, 디렉토리 이름과 일치하는 데 도움이 필요하며 디렉토리 이름이 무엇인지에 대한 규칙이 명확하게 정의되어 있지 않은 것으로 들립니다.

  1. 스토어 테이블의 디렉토리 이름 사전에 그 참조 : 그렇다면

    , 나는 몇 가지 옵션을 생각할 수 있습니다.

  2. 디렉터리 명명 규칙을 좀 더 정상적으로 변경하십시오.
  3. 처음에 디렉토리 이름을 만드는 데 사용되는 규칙을 찾으십시오. 해당 코드를 다시 사용하십시오.
  4. 규칙을 가정으로 다시 작성하고 디렉토리가 있는지 확인하십시오. 존재하지 않을 때까지 다른 가정을 시도하지 않는 경우 확인하십시오.

기존의 디렉토리 체크 아웃을 구체적으로 말하면 Dir.glob입니다. 공백에 분할 할 수있는 파일 globbing 매개 변수를 사용하고 영숫자가 아닌 문자는 제거하고 splats (*)로 결합 할 수 있습니다.

예를 들어, 의사 코드 : dir_name.gsub("[^a-zA-Z0-9]", "").split(/\s/).join("*")

+0

디렉토리로 이동 한 다음 각 하위 디렉토리를 검색하는 것이 합리적입니까? 나는 더 명확해야했다, 나는 뿌리까지 갈 수 있었다. 그러나 명명 규칙이 모두 bs'd이고 인간적인 실수가이 db를 괴롭 히고 있기 때문에 나는 더 깊게 갈 수 없다. –