CocoaPods / Xcodeproj

Create and modify Xcode projects from Ruby.

Home Page:http://rubygems.org/gems/xcodeproj

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NoMethodError - undefined method `downcase' for nil:NilClass

LWX124 opened this issue · comments

commented

In my project,it works well in v1.19.0, but when it upgrades to v1.21.0, there's an error:

NoMethodError - undefined method 'downcase' for nil:NilClass

backtrace:

Error

NoMethodError - undefined method `downcase' for nil:NilClass
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object/group.rb:445:in `block in sort'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object_list.rb:182:in `sort!'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object_list.rb:182:in `sort!'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object/group.rb:431:in `sort'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:183:in `sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `block (2 levels) in sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `block in sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:178:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:178:in `sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `block (2 levels) in sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:180:in `block in sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:178:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:178:in `sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:175:in `block in sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:173:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object.rb:173:in `sort_recursively'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project.rb:811:in `sort'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer/xcode/pods_project_generator/pods_project_writer.rb:81:in `block in save_projects'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer/xcode/pods_project_generator/pods_project_writer.rb:80:in `each'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer/xcode/pods_project_generator/pods_project_writer.rb:80:in `save_projects'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer/xcode/pods_project_generator/pods_project_writer.rb:63:in `write!'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:330:in `block in create_and_save_projects'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/user_interface.rb:64:in `section'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:309:in `create_and_save_projects'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:301:in `generate_pods_project'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:180:in `integrate'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:167:in `install!'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/command/install.rb:52:in `run'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/lib/cocoapods/command.rb:52:in `run'
/Users/weixi1/.rvm/gems/ruby-2.7.4/gems/cocoapods-1.11.2/bin/pod:55:in `<top (required)>'
/Users/weixi1/.rvm/gems/ruby-2.7.4/bin/pod:23:in `load'
/Users/weixi1/.rvm/gems/ruby-2.7.4/bin/pod:23:in `<main>'
/Users/weixi1/.rvm/gems/ruby-2.7.4/bin/ruby_executable_hooks:22:in `eval'
/Users/weixi1/.rvm/gems/ruby-2.7.4/bin/ruby_executable_hooks:22:in `<main>'

I checked my podspec, found that it had a subspec named 'metal', and also, there's a real directory named 'Metal', it throwed exception above when executing pod install.

podspec content:

s.subspec 'metal' do |ss|
          ss.source_files = [
                "MyProject/Metal/Shaders/*.h",
            ]
 end

directory tree:

.
├── MyProject
|   ├── ...
│   ├── Metal
|   ├── ...
└── MyProject.podspec

the error line : line 445 in group.rb
result = x.path.downcase <=> y.path.downcase

It seems like that x.path is nil

Finally, I changed my subspec name from 'metal' to 'metal1'(different from the directory name), it worked.

What's the problem with Xcodeproj?

Seems like a potential bug yes. Do you have a sample project or test case that shows the issue?

Any update on this? We are experiencing major issues on bitrise. We downgraded to version 1.19.0 (downgraded also cocoapods) to make this work. Also commenting the line at /Users/<user>/.rvm/gems/ruby-2.7.4/gems/xcodeproj-1.21.0/lib/xcodeproj/project/object/group.rb:445 does work, although i don't know if it will cause other unexpected behaviors or unwanted side effects.

Is there any news on this?

commented

@dnkoutso Ping~
I created a PR (#865)