An error occurred while processing the pre-install hook of the Podfile
Asked Answered
I

4

15

I met an error when I run pod install.

[!] An error occurred while processing the pre-install hook of the Podfile.

undefined method `pods' for #<Pod::Installer:0x007f9f93a66b90>

/Users/XieYunjia/warmupApp/Podfile:49:in `block (2 levels) in from_ruby'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-0.38.0/lib/cocoapods-core/podfile.rb:153:in `call'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-0.38.0/lib/cocoapods-core/podfile.rb:153:in `pre_install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:731:in `run_podfile_pre_install_hook'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:719:in `block in run_podfile_pre_install_hooks'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/user_interface.rb:140:in `message'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:718:in `run_podfile_pre_install_hooks'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:142:in `block in download_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/user_interface.rb:59:in `section'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:139:in `download_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:104:in `install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command/project.rb:71:in `run_install_with_update'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command/project.rb:101:in `run'
/Library/Ruby/Gems/2.0.0/gems/claide-0.9.1/lib/claide/command.rb:312:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command.rb:48:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/bin/pod:44:in `<top (required)>'
/usr/bin/pod:23:in `load'
/usr/bin/pod:23:in `<main>'

This is the content of my Podfile.

platform :ios, "7.0"

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '2.5.4'
pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord.git', :tag => 'v2.3.0-beta.5',:inhibit_warnings => true
pod 'ReactiveCocoa', '~> 2.4.7'

......

pod 'LTNavigationBar', '~> 2.0.1'
pod 'TSMessages' ,:head

# DEBUG
pod 'SocketRocket', '~> 0.2.0' ,:inhibit_warnings => true,     :configurations => ['Debug']
pod 'PonyDebugger', '~> 0.4.3' ,:inhibit_warnings => true, :configurations => ['Debug']
pod 'Reveal-iOS-SDK', :configurations => ['Debug']

target :warmupTests, :exclusive => true do
  pod 'Kiwi'
end

#remove all unsupported localization files
pre_install do |installer|
  supported_locales = ['base' , 'zh-hans', 'en' , 'english']

  installer.pods.each do |pod|
    %x[ find "#{pod.root}" -name '*.lproj' ].split.each do |bundle|
      if (!supported_locales.include?(File.basename(bundle,         ".lproj").downcase))
        puts "Removing #{bundle}"
        FileUtils.rm_rf(bundle)
      end
    end
  end
end

If I removed the last few lines showing below, this error would disappear.

#remove all unsupported localization files
pre_install do |installer|
  supported_locales = ['base' , 'zh-hans', 'en' , 'english']

  installer.pods.each do |pod|
    %x[ find "#{pod.root}" -name '*.lproj' ].split.each do |bundle|
      if (!supported_locales.include?(File.basename(bundle,         ".lproj").downcase))
        puts "Removing #{bundle}"
        FileUtils.rm_rf(bundle)
      end
    end
  end
end

What causes this error, and how can I fix it? Sorry for my poor English.

Immigrant answered 23/7, 2015 at 10:58 Comment(0)
D
7

You get this error message on CocoaPods 0.38+, just change installer.project to installer.pods_project will resolve it.

See https://github.com/CocoaPods/CocoaPods/issues/3918 for more details:

Yep, this is due to changes in the hooks API which you're using in your Podfile, see http://blog.cocoapods.org/CocoaPods-0.38/ for more information.

Driveway answered 3/8, 2015 at 15:31 Comment(0)
B
2

Cocoapods made a change to installer recently. You'll want to do something like this:

pre_install do |installer|
    supported_locales = ['base', 'zh-hans', 'en', 'english']

    Dir.glob(File.join(installer.sandbox.pod_dir('FormatterKit'), '**', '*.lproj')).each do |bundle|
        if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase))
            puts "Removing #{bundle}"
            FileUtils.rm_rf(bundle)
        end
    end
end
Bettyebettzel answered 30/7, 2015 at 18:44 Comment(0)
S
1

Try something like this for backwards compatibility

pre_install do |installer_or_rep|
    # backwards compatibility info http://blog.cocoapods.org/CocoaPods-0.38/
    supported_locales = ['base' , 'zh-hans', 'en' , 'english']

    if installer_or_rep.respond_to?(:installer)
        # pre 0.38.0
        installer_or_rep.pods.each do |pod|
            delete_unsupported_locales(pod.root, supported_locales)
        end
    else
        # post 0.38.0
       delete_unsupported_locales(installer_or_rep.sandbox.root, supported_locales)
    end
end

def delete_unsupported_locales(root, supported_locales)
    Dir.glob(File.join(root, '**', '*.lproj')).each do |bundle|
        if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase))
            puts "Removing #{bundle}"
            FileUtils.rm_rf(bundle)
        end
    end
end
Sidewheel answered 5/8, 2015 at 9:24 Comment(0)
H
0

Updated script working on pod v1.3.1 (as of 4/10/2017)

platform :ios, '9.0'

target 'MyApp-iOS' do

    use_frameworks!

    # Pods for MyApp-iOS

    # Remove unused languages from Pods
    pre_install do |installer|
        supported_locales = ['base', 'en', 'english']
        delete_unsupported_locales(installer.sandbox.root, supported_locales)
    end
end

def delete_unsupported_locales(root, supported_locales)
    Dir.glob(File.join(root, '**', '*.lproj')).each do |bundle|
        if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase))
            puts "Removing #{bundle}"
            FileUtils.rm_rf(bundle)
        end
    end
end
Humidor answered 4/10, 2017 at 7:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.