ruby / ruby/rake

Rake executes file task when prerequisites have older timestamp

Đang mở
#246 5 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Ruby
Star
2.5k
Fork
650
Merge trung bình
6 phút
Pull request đã merge (30 ngày)
3

Mô tả

When a file task depends on some non-file task indirectly,
Rake executes the file task even if its immediate prerequisite files have older timestamp.

It looks like the behavior changed at 12.1.0.

Example
require "rake/clean"

CLEAN.include("config.yml", "component")

task "setup" do
  puts Rake::VERSION
  touch "config.yml" unless File.exist?("config.yml")
end

file "config.yml" => "setup"

file "component" => "config.yml" do |t|
  puts "[config.yml] #{File.mtime(t.prerequisites[0])}"
  puts "[component]  #{File.exist?(t.name) && File.mtime(t.name)}"
  sleep 1
  touch t.name
end

Based on the above Rakefile, clean up and create the "component" first.

$ rake clean && rake component

The next rake component results in different behavior as follows.
On 12.0.0:

$ rake component --trace
(in /path/to/Rakefile-directory)
** Invoke component (first_time, not_needed)
** Invoke config.yml (first_time)
** Invoke setup (first_time)
** Execute setup
12.0.0
** Execute config.yml

On 12.1.0:

$ rake component --trace
(in /path/to/Rakefile-directory)
** Invoke component (first_time)
** Invoke config.yml (first_time)
** Invoke setup (first_time)
** Execute setup
12.1.0
** Execute config.yml
** Execute component
[config.yml] 2018-01-01 15:13:19 +0900
[component]  2018-01-01 15:13:20 +0900
touch component

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Tái hiện vấn đề bằng ví dụ Rakefile và so sánh đầu ra của --trace giữa hành vi bị ảnh hưởng và 12.0. Bắt đầu bằng cách lần theo cách các điều kiện tiên quyết của tác vụ tệp và dấu thời gian được đánh giá; hoàn tất khi rake component không còn thực thi tác vụ tệp khi các tệp điều kiện tiên quyết trực tiếp của nó cũ hơn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
ruby
Lĩnh vực
build-system
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
38/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.