Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix compatibility error with Ruby 3.x #11959

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

kpmaalej
Copy link

When using CocoaPods with Ruby 3.x, and the path has non-ascii characters in it, then we may encounter the following error:

Encoding::CompatibilityError - incompatible character encodings: UTF-8 and ASCII-8BIT
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1564:in `join'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1564:in `join'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1224:in `path'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:500:in `block in copy_entry'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1513:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:497:in `copy_entry'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:471:in `block in cp_r'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1597:in `block in fu_each_src_dest'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1613:in `fu_each_src_dest0'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1595:in `fu_each_src_dest'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:470:in `cp_r'
/Users/uddmobile-2019/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.12.1/lib/cocoapods/downloader.rb:55:in `block (2 levels) in download'

This merge request aims to fix this so that users don't have to change their path to accommodate a software limitation.

When using CocoaPods with Ruby 3.x, and the path has non-ascii characters in it, then we may encounter the following error: 

```
Encoding::CompatibilityError - incompatible character encodings: UTF-8 and ASCII-8BIT
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1564:in `join'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1564:in `join'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1224:in `path'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:500:in `block in copy_entry'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1513:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1516:in `block in wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `each'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1515:in `wrap_traverse'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:497:in `copy_entry'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:471:in `block in cp_r'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1597:in `block in fu_each_src_dest'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1613:in `fu_each_src_dest0'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:1595:in `fu_each_src_dest'
/Users/uddmobile-2019/.rvm/rubies/ruby-3.0.0/lib/ruby/3.0.0/fileutils.rb:470:in `cp_r'
/Users/uddmobile-2019/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.12.1/lib/cocoapods/downloader.rb:55:in `block (2 levels) in download'
```

This commit aims to fix this so that users don't have to change their path to accommodate a software limitation.
@dnkoutso
Copy link
Contributor

how easy is it to add a test?

@martin-braun
Copy link

Thank's for making the PR, I wasn't even aware there is compatibility with Ruby 3 in the first place. It would've been helpful if the docs would mention this.

Any progress on this, btw?

@FanningHau
Copy link

same error here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants