Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Bug: within(directory){ execute(string) } should either 'just work' or 'boom'

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

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

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
ruby
Lĩnh vực
devops

Hướng nghiên cứu

Bắt đầu bằng cách đọc các entry point hiện có của within và execute cùng tài liệu liên quan đến chúng, sau đó tái hiện hành vi thư mục bị bỏ qua một cách im lặng và sự tương phản với thư mục gây lỗi được mô tả ở đây. Giải quyết lựa chọn thiết kế giữa việc làm cho các lệnh chuỗi hoạt động, phát sinh ngoại lệ hoặc loại bỏ within, rồi ghi lại tài liệu và kiểm thử hành vi đã chọn.

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

Mô tả

docs aren't good enough to explain the design choice IMHO - just check
stackoverflow...

one solution is just to fix it - use shellwords to properly escape the command

  require 'shellwords'

  def execute(*args, &block)
    if args.first.is_a?(String)
      command = Shellwords.escape(args.first)
    end

    # ...
  end

otherwise raise an exception

  def execute(*args, &block)
    if args.first.is_a?(String) and inside_within?
      raise "don't do that"
    end

    # ...
  end

the current behavior of doing

  within directory do  # silently ignored
    execute command
  end

just isn't POLS - the point of a library like cap is to be able to re-use code
but, currently, each and every use must re-invent 'cd into a (properly escaped
directory) and run commands', including handling the fact that

  within(does_not_exist) do # raises
  end
  execute "#{ does_not_exist }; command.sh" # reports a failed exit status that leads to debugging which part failed

a final solution would be to remove the 'within' API since it sometimes works,
and sometimes does not, issuing no exception nor warning

Ngôn ngữ chính
Ruby
Star
1.2k
Fork
257
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

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.

Issue khác của capistrano/sshkit

Tất cả issue của capistrano/sshkit

Issue tương tự

Thêm issue về Ruby

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.