교환 Settingslogic을 목표로 하는 SettingsCabinet을 발명하였다
일의 발생
나는 바퀴를 다시 발명했다.
Rails 프로젝트에서 설정 관리에 자주 사용되는 gm에는 Settingslogic이 있다고 느낀다.
아주 잘 완성됐습니다. 루비젬스가 공개한 최신 버전 2.0.9[1]는 2012년 12월 공개[2]였지만 루비(MRI) 3.0도 작업하고 있습니다.
실행 중입니다.
네, 3.0까지입니다.
Rubby 3.1에서 YAML 백엔드 Psych가 4.0으로 변경되어 손상되었습니다.
자세한 내용은 여기서 잠시 접어두고, 다음은 지원을 위한 PR이지만 채택 여부가 의문이다.
어떻게
움직일 수 없는 것은 어쩔 수 없기 때문에 대응법을 연구했다.
이와 같은 패치[3]도 사용할 수 있지만, 개발되지 않은 패치를 계속 사용하는 것보다 다른 것으로 옮기는 게 낫다고 생각한다.
과도 목적지로서의 후보는 다음과 같은 두 가지가 있다
config_for
사용https://github.com/rubyconfig/config
2dry-*계의gem에 의존하기 때문에 의존관계가 큰 편[4]이 싫고, 설정 파일을 하나로 정리해야 하는 것 같기도 하고[5]도 싫습니다.
오직 한 가지 할 일이 있다
목적지 이동 후보가 좋지 않으면 한 번만 더 발명할 수 있기 때문에 바퀴의 재발명을 했다.
이름이 SettingsCabinet입니다.
Pretty Settings라는 이름으로 개발했지만 안 될 것 같아서 바꿨어요.
특별한 기능은 없지만 대체로 다음과 같은 느낌이다.
defaults: &defaults
foo: 1
bar: <%= 2 * 2 %>
date: 2022-04-24
time: 2024-04-24T12:34:56+09:00
symbol: :symbol
nested:
child: "child"
development:
<<: *defaults
foo: 2
test:
<<: *defaults
foo: 3
production:
<<: *defaults
foo: 4
config/settings.rbclass Settings < SettingsCabinet::Base
using SettingsCabinet::DSL
source Rails.root.join("config/settings.yml")
namespace Rails.env
permitted_classes [Date, Time, Symbol]
end
# RAILS_ENV=development
Settings.foo #=> 2
Settings.nested.child #=> "child"
이렇게 바꿨어요.
셋팅스logic에서 셋팅스캐비넷으로 바꿔 무난하게 움직였다.[8]
끝맺다
가능하다면 한번 써볼 수 있다면 기쁠 거예요.
나는 언젠가 내가 KMS를 지지할 것이라고 생각한다.의욕만 있다.
각주
https://rubygems.org/gems/settingslogic/versions/2.0.9 ↩︎
GiitHub의 최종 업데이트는 2014년 8월https://github.com/settingslogic/settingslogic/commit/463073f8c42fa9b5d976ccd5b8c98f433a18f42e↩︎입니다.
Settingslogic의 코드 기초는 매우 작아서 앞으로 다른 문제가 발생하더라도 처리할 수 있다↩︎
검증 시스템의 기능을 사용하면 괜찮지만 사용 계획이 없고 의존 관계가 적은 것이 좋다↩︎
설정한 종류별로 분류하고 싶을 때도 있죠↩︎
https://github.com/settingslogic/settingslogic/tree/463073f8c42fa9b5d976ccd5b8c98f433a18f42e#4-optional--dynamic-settings- ↩︎
장서 때문에 파일 키 설정에 사용할 이름을 줄이고 싶지 않습니다↩︎
이렇게 말하지만 이 글을 쓸 때 아직 제작사에서 발표하지 않았다↩︎
Reference
이 문제에 관하여(교환 Settingslogic을 목표로 하는 SettingsCabinet을 발명하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yuji_developer/articles/cefe59ad72c7e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)