설치에 실패했습니다(제 설치 스크립트는 mailgun_api_key를 설정할 수 있도록 API 키를 가져오게 되어 있습니다). 로컬 개발 인스턴스에서도 확인해 보았습니다.
$ rake api_key:get
rake aborted!
NoMethodError: undefined method `create_master_key' for ApiKey (call 'ApiKey.connection' to establish a connection):Class
Did you mean? create_with
/home/pfaffman/src/discourse/lib/tasks/api.rake:5:in `block in <main>'
Tasks: TOP => api_key:get
(See full trace by running task with --trace)
오! 이미 키가 존재하는 경우 키를 변경하지 않는 것이 더 낫거나, create_if_not_exists 작업을 두는 것이 좋겠습니다. 키를 변경하지 않고 기존 키를 rake 태스크로 가져올 수 있는 것은 매우 유용합니다. 이렇게 하면 키를 사용하는 다른 부분에 영향을 주지 않고 기존 키를 가져올 수 있으니까요.
제 Ansible 도구 중 몇몇에서는 API 키가 없는 경우, 기존 키를 가져오기 위해 해당 rake 태스크를 호출합니다. 예를 들어 다음과 같이요.
- name: Get api key
block:
- shell: docker exec -w /var/www/discourse -i {{ discourse_yml }} rake api_key:get
register: get_api_key
- set_fact:
discourse_api_key: "{{ get_api_key.stdout }}"
when: discourse_api_key is not defined
이 방식으로 키를 가져오는 것이 실제로 필요한 경우는 클린 설치(clear install)를 할 때뿐인 것 같습니다. (기존 사이트의 경우 해당 사이트의 변수에 API 키를 이미 가지고 있습니다.)
키 처리 방식이 새로워졌으니, 작업을 마친 후 키를 삭제하거나, 컨테이너 안에서 rails 스크립트를 실행하여 사이트 설정을 어떻게든 변경할 수도 있을 것 같습니다.
제가 한 변경 사항 중 하나는 이제 사용자당 여러 키(또는 여러 ‘마스터 키’)를 가질 수 있다는 것입니다. 이는 각 통합(integration)에 고유한 키를 부여할 수 있으며, 각각을 별도로 감사/취소/삭제할 수 있음을 의미합니다. 따라서 귀하의 경우, 설명을 "pfaffman’s setup tooling"으로 설정한 키를 생성할 수 있습니다. 그러면 사이트 관리자는 해당 키의 용도를 알 수 있으며, 더 이상 필요하지 않을 때 취소/삭제할 수 있습니다.
그것이 rake 태스크로 어떻게 구현되는지에 대해서는… 잘 모르겠습니다. api:get_or_create "my key description"와 같은 태스크를 가질 수 있을지도 모릅니다.
잠깐. 뭐라고요?! 언제부터요? 제 하드 드라이브에 있는 현재 discourse 소스 코드의 커밋에는 여전히 schema.rb 파일이 있습니다. 찾고자 하는 모델이 정확히 무엇인지 파악할 수 있는 것은 정말, 정말 유용합니다. 단일 파일을 열어 무언가를 검색하는 것(예: 찾고자 하는 모델이 무엇인지 파악하기 위해)은 app/models 디렉토리의 200개 이상의 파일을 살펴보는 것보다 훨씬 쉽습니다. 모델 파일 끝부분의 스키마 부분만 grep으로 검색할 수 있는 좋은 방법조차 없습니다.
찾고자 하는 모델이 무엇인지 모르면 어떻게 찾을 수 있나요? 예를 들어 "auth"와 관련된 테이블이 여러 개 있는데, 모두 auth로 시작하는 것도 아닌데, 어디서부터 살펴봐야 할지 어떻게 파악할 수 있겠습니까?