tayo 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b9c646b5ccd013b01cf686073be821ecbfec142863d6f2b3e01cf38ca46ef46
4
- data.tar.gz: 535e89571f276369392c22a36758cd119b9d8c9a20900af488acf1f2a5ddb91a
3
+ metadata.gz: da1c2b256c1dafba3c750dc5f8fe18487db251584646fc485576bf338544bfe1
4
+ data.tar.gz: 61ea6d61163327ef47b1462a290935eec9a899db30703012f12cbdcf0b6bf021
5
5
  SHA512:
6
- metadata.gz: e40986acccc2fcd4c429bd5ff99e007b6136de237c493f89620ef49d5a8e48e1123c80e5da134825d42ffa9805c334dbb9b4645c555a88f9d9075d814d8916b8
7
- data.tar.gz: 523adadbf90dacc6bea8d30d1e1c9aac2f11d61dd7fb45ae7ff7f3cc3df6b2e5b74e9ba28f53e6216f7a5cd1b6391c40c00658ae7529b0eeeea67c0ed7cad61a
6
+ metadata.gz: 6723d0513bb51d2417dee22159d8b10bfd22714bbe99376a289ed0b723f0dc93e2e6a9294662f2272f8f77872752eedf8f40dc16770af03aa559b2e55841d922
7
+ data.tar.gz: 68017f8f0f916c510101abd914dd1ac117befd8bcbb726942a79da7f76b51b70401fdafd162753a5d4e402ca012916933bef6d881a4bb0716ee8b59c41b8913f
data/DEBUG_GUIDE.md ADDED
@@ -0,0 +1,155 @@
1
+ # Tayo 실행 환경 문제 해결 가이드
2
+
3
+ ## 1. 현재 설치된 gem 버전 확인
4
+
5
+ ```bash
6
+ # 시스템에 설치된 tayo gem 버전 확인
7
+ gem list tayo
8
+
9
+ # 프로젝트에서 사용 중인 버전 확인 (Bundler 사용 시)
10
+ bundle show tayo
11
+
12
+ # 어느 위치의 gem이 실행되는지 확인
13
+ which tayo
14
+ gem which tayo
15
+ ```
16
+
17
+ ## 2. 버전 업데이트
18
+
19
+ ### 시스템 전체 gem 업데이트
20
+ ```bash
21
+ # 최신 버전으로 업데이트
22
+ gem update tayo
23
+
24
+ # 특정 버전 설치
25
+ gem install tayo -v 0.1.7
26
+
27
+ # 기존 버전 모두 제거 후 재설치
28
+ gem uninstall tayo --all
29
+ gem install tayo
30
+ ```
31
+
32
+ ### Bundler 사용 시
33
+ ```bash
34
+ # Gemfile에서 버전 확인
35
+ cat Gemfile | grep tayo
36
+
37
+ # bundle update
38
+ bundle update tayo
39
+
40
+ # 또는 Gemfile에 버전 명시
41
+ # gem 'tayo', '~> 0.1.7'
42
+
43
+ # bundle install
44
+ bundle install
45
+ ```
46
+
47
+ ## 3. 실행 방법별 확인
48
+
49
+ ### 직접 실행
50
+ ```bash
51
+ tayo init
52
+ ```
53
+
54
+ ### Bundle exec 사용
55
+ ```bash
56
+ bundle exec tayo init
57
+ ```
58
+
59
+ ### 프로젝트 내 개발 버전 사용
60
+ ```bash
61
+ # Gemfile에 로컬 경로 지정
62
+ # gem 'tayo', path: '/path/to/tayo'
63
+ ```
64
+
65
+ ## 4. 디버깅 정보 수집
66
+
67
+ 다음 스크립트를 실행하여 환경 정보를 수집하세요:
68
+
69
+ ```ruby
70
+ # debug_tayo.rb
71
+ puts "=== Tayo 디버깅 정보 ==="
72
+ puts "Ruby 버전: #{RUBY_VERSION}"
73
+ puts "Bundler 사용: #{defined?(Bundler) ? 'Yes' : 'No'}"
74
+
75
+ require 'tayo/version'
76
+ puts "Tayo 버전: #{Tayo::VERSION}"
77
+
78
+ require 'tayo/commands/init'
79
+ init = Tayo::Commands::Init.new
80
+
81
+ # gem 위치 확인
82
+ spec = Gem::Specification.find_by_name('tayo')
83
+ puts "Gem 위치: #{spec.gem_dir}"
84
+ puts "Gem 버전: #{spec.version}"
85
+
86
+ # 메서드 존재 확인
87
+ puts "fix_dockerfile_bootsnap_issue 메서드 존재: #{init.respond_to?(:fix_dockerfile_bootsnap_issue, true)}"
88
+
89
+ # 메서드 위치 확인
90
+ if init.respond_to?(:fix_dockerfile_bootsnap_issue, true)
91
+ method = init.method(:fix_dockerfile_bootsnap_issue)
92
+ puts "메서드 정의 위치: #{method.source_location}"
93
+ end
94
+ ```
95
+
96
+ ## 5. 캐시 문제 해결
97
+
98
+ ### RubyGems 캐시 정리
99
+ ```bash
100
+ gem cleanup tayo
101
+ ```
102
+
103
+ ### Bundler 캐시 정리
104
+ ```bash
105
+ bundle clean --force
106
+ rm -rf .bundle
107
+ bundle install
108
+ ```
109
+
110
+ ## 6. 수동 테스트
111
+
112
+ 프로젝트 디렉토리에서 직접 테스트:
113
+
114
+ ```ruby
115
+ # irb 또는 rails console에서
116
+ require 'tayo'
117
+ init = Tayo::Commands::Init.new
118
+ init.send(:fix_dockerfile_bootsnap_issue)
119
+ ```
120
+
121
+ ## 7. 일반적인 문제와 해결법
122
+
123
+ ### 문제: "undefined method" 에러
124
+ - 원인: 오래된 버전 사용
125
+ - 해결: `gem update tayo`
126
+
127
+ ### 문제: Bundler가 다른 버전 사용
128
+ - 원인: Gemfile.lock에 고정된 버전
129
+ - 해결: `bundle update tayo`
130
+
131
+ ### 문제: 여러 버전 설치로 인한 충돌
132
+ - 원인: 시스템과 프로젝트 버전 충돌
133
+ - 해결:
134
+ ```bash
135
+ gem uninstall tayo --all
136
+ bundle install
137
+ ```
138
+
139
+ ### 문제: 권한 문제
140
+ - 원인: 시스템 gem 디렉토리 권한
141
+ - 해결:
142
+ ```bash
143
+ # rbenv/rvm 사용 권장
144
+ # 또는
145
+ gem install tayo --user-install
146
+ ```
147
+
148
+ ## 8. 버전별 기능 확인
149
+
150
+ - v0.1.4: bootsnap 제거 기능 첫 추가
151
+ - v0.1.5: 라인별 처리 방식
152
+ - v0.1.6: reject 방식으로 개선
153
+ - v0.1.7: 테스트 추가 및 개행 문자 처리 수정
154
+
155
+ 필요한 최소 버전: **0.1.6 이상**
data/Rakefile CHANGED
@@ -1,4 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
- task default: %i[]
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.libs << "lib"
9
+ t.test_files = FileList["test/**/*_test.rb"]
10
+ end
11
+
12
+ task default: :test
@@ -6,7 +6,7 @@ module Tayo
6
6
  module Commands
7
7
  class Init
8
8
  def execute
9
- puts "🏠 Tayo 초기화를 시작합니다...".colorize(:green)
9
+ puts "🏠 Tayo v#{Tayo::VERSION} 초기화를 시작합니다...".colorize(:green)
10
10
 
11
11
  unless rails_project?
12
12
  puts "❌ Rails 프로젝트가 아닙니다. Rails 프로젝트 루트에서 실행해주세요.".colorize(:red)
@@ -136,8 +136,6 @@ module Tayo
136
136
  end
137
137
 
138
138
  def ensure_dockerfile_exists
139
- dockerfile_created = false
140
-
141
139
  unless File.exist?("Dockerfile")
142
140
  puts "🐳 Dockerfile이 없습니다. 기본 Dockerfile을 생성합니다...".colorize(:yellow)
143
141
 
@@ -145,7 +143,6 @@ module Tayo
145
143
  if system("rails app:update:bin")
146
144
  system("./bin/rails generate dockerfile")
147
145
  puts "✅ Dockerfile이 생성되었습니다.".colorize(:green)
148
- dockerfile_created = true
149
146
  else
150
147
  puts "⚠️ Dockerfile 생성에 실패했습니다. 수동으로 생성해주세요.".colorize(:yellow)
151
148
  puts " 다음 명령어를 실행하세요: ./bin/rails generate dockerfile".colorize(:cyan)
@@ -170,18 +167,50 @@ module Tayo
170
167
  comment_pattern = /^\s*# Precompile bootsnap code for faster boot times/i
171
168
  run_command_pattern = /^\s*RUN bundle exec bootsnap precompile app\/ lib\//i
172
169
 
170
+ # 디버깅: 매칭되는 라인 확인
171
+ debug_matches = false
172
+ if ENV['TAYO_DEBUG'] == 'true'
173
+ debug_matches = true
174
+ puts "🔍 Dockerfile 디버깅 모드".colorize(:yellow)
175
+ puts " 전체 라인 수: #{lines.length}"
176
+ lines.each_with_index do |line, index|
177
+ if line.match?(comment_pattern)
178
+ puts " 주석 매치 (라인 #{index + 1}): #{line.strip}"
179
+ elsif line.match?(run_command_pattern)
180
+ puts " RUN 매치 (라인 #{index + 1}): #{line.strip}"
181
+ elsif line.include?("bootsnap")
182
+ puts " 기타 bootsnap (라인 #{index + 1}): #{line.strip}"
183
+ end
184
+ end
185
+ end
186
+
173
187
  # `reject`를 사용해 패턴과 일치하는 줄들을 한번에 제거합니다.
174
188
  filtered_lines = lines.reject do |line|
175
189
  line.match?(comment_pattern) || line.match?(run_command_pattern)
176
190
  end
177
191
 
178
192
  new_content = filtered_lines.join("\n")
193
+ # 원본 파일이 개행으로 끝났다면 새 파일도 개행으로 끝나도록
194
+ new_content += "\n" if original_content.end_with?("\n") && !new_content.end_with?("\n")
179
195
 
180
196
  # 변경된 내용이 있을 경우에만 파일을 다시 씁니다.
181
197
  if new_content != original_content
198
+ removed_lines = lines.length - filtered_lines.length
182
199
  File.write(dockerfile_path, new_content)
183
200
  puts "✅ Dockerfile에서 bootsnap precompile 부분을 제거했습니다. (빌드 문제 해결)".colorize(:green)
201
+ puts " - 제거된 라인 수: #{removed_lines}".colorize(:gray)
184
202
  puts " - 이는 알려진 빌드 문제를 방지하기 위함입니다.".colorize(:gray)
203
+
204
+ if debug_matches
205
+ puts " 남은 bootsnap 라인:".colorize(:yellow)
206
+ filtered_lines.each_with_index do |line, index|
207
+ if line.include?("bootsnap")
208
+ puts " 라인 #{index + 1}: #{line.strip}"
209
+ end
210
+ end
211
+ end
212
+ elsif debug_matches
213
+ puts "ℹ️ 제거할 bootsnap 라인이 없습니다.".colorize(:yellow)
185
214
  end
186
215
  end
187
216
 
data/lib/tayo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tayo
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.8"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tayo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - 이원섭wonsup Lee/Alfonso
@@ -75,6 +75,7 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - ".DS_Store"
78
+ - DEBUG_GUIDE.md
78
79
  - README.md
79
80
  - Rakefile
80
81
  - exe/tayo