Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Using Ruby in a Non-Ruby World

Using Ruby in a Non-Ruby World

Samuel E. Giddins

March 04, 2015
Tweet

More Decks by Samuel E. Giddins

Other Decks in Technology

Transcript

  1. No

  2. Let’s look at some of the tools we use: —

    rvm/rbenv/chruby — Bundler — Native extensions
  3. Compilation as part of the CocoaPods gem install process is

    dead. Long live precompiled gems! — CocoaPods 0.27 and improved installation UX
  4. Not everyone needs to have a compiler installed. Or the

    Ruby headers. Or a proper build setup.
  5. Not everyone needs to have a compiler installed. Or the

    Ruby headers. Or a proper build setup. And they shouldn't need to
  6. In this ‘developer bubble’ there is no sane Ruby environment

    unless you at least build your own Ruby, but preferably including one or more of the following tools: homebrew, RVM, rbenv, and many other alternatives.
  7. — Ruby 1.9 hash syntax - ! — Curly brace

    procs & lambdas - " — do...end blocks - ! — Symbol parameters - " — def f(*args); end - !
  8. NoMethodError - undefined method `[]' for #<Xcodeproj::Project::Object::PBXFileReference:0x007fcf522734a8> /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/project.rb:186:in `block in

    add_file_reference' /usr/local/Cellar/ruby/2.1.3_1/lib/ruby/2.1.0/pathname.rb:266:in `block in each_filename' /usr/local/Cellar/ruby/2.1.3_1/lib/ruby/2.1.0/pathname.rb:266:in `each' /usr/local/Cellar/ruby/2.1.3_1/lib/ruby/2.1.0/pathname.rb:266:in `each_filename' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/project.rb:184:in `add_file_reference' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:168:in `block (2 levels) in add_file_accessors_paths_to_pods_group' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:166:in `each' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:166:in `block in add_file_accessors_paths_to_pods_group' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:162:in `each' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:162:in `add_file_accessors_paths_to_pods_group' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:103:in `block in add_resources' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/user_interface.rb:110:in `message' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:102:in `add_resources' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer/file_references_installer.rb:38:in `install!' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer.rb:486:in `install_file_references' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer.rb:130:in `block in generate_pods_project' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/user_interface.rb:49:in `section' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer.rb:128:in `generate_pods_project' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/installer.rb:96:in `install!' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/command/project.rb:71:in `run_install_with_update' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/command/project.rb:101:in `run' /usr/local/lib/ruby/gems/2.1.0/gems/claide-0.8.1/lib/claide/command.rb:312:in `run' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/lib/cocoapods/command.rb:46:in `run' /usr/local/lib/ruby/gems/2.1.0/gems/cocoapods-0.36.0.rc.1/bin/pod:44:in `<top (required)>' /usr/local/bin/pod:23:in `load' /usr/local/bin/pod:23:in `<main>'
  9. Sure, these tips are designed to keeps Ruby newcomers happy.

    But they also make your software much friendlier.