Difference between revisions of "Ruby"

From Wiki2
Line 131: Line 131:
=> ["A", "B", "C"]
=> ["A", "B", "C"]


>> ('a'..'z').to_a.shuffle[0..7]      # Pull out the first eight elements.
=> ["f", "w", "i", "a", "h", "p", "c", "x"]
>> ('a'..'z').to_a.shuffle[0..7].join  # Join them together to make one string.
=> "mznpybuj"
irb(main):012:0> ('a'..'z').to_a[0..7]
=> ["a", "b", "c", "d", "e", "f", "g", "h"]
</pre>
</pre>

Revision as of 17:02, 4 November 2011

goto /users/tim/code/ruby

rails new appname
sets up directory system
bundle install
installs gems
.gitignore
installed with rails new
git init
starts new repository
git add .
git status; tells you what branch you are on and if you have stuff to commit
git commit
commits change locally
git log
of commits

on github

new repository

back on local machine

git remote add origin git@github.com
mckennatim/rubyapp2.git: this line is given in github
git push -u origin master
get checkout -b modify-README
creates a new branch
mate README
now in new branch
git mv README README.markdown
mate README.markdown
git commit -am "improve readme"
commit locally all, message
git checkout master
moves back to master branch
git merge modify-README
bringes changes of the modify-README branch into the master branch
git push
all you need to push it back to github

to use hosting site

heroku
heroku keys:add
heroku create
git push heroku master
git mergetool
to resolve conflicts
heroku wouldn't work with ror3
fixed config/application.rb to read..
require File.expand_path('../boot', __FILE__)

# Pick the frameworks you want:
#require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end
require "active_record"
kill rail server; lsof -wni tcp
3000, kill -9 PID

ruby syntax

>> nil.empty?
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
>> nil.to_s.empty?      # Message chaining
=> true

It’s worth noting that the nil object is special, in that it is the only Ruby object that is false in a boolean context, apart from false itself:

>> if nil
>>   true
>> else
>>   false        # nil is false
>> end
=> false

# 0 (and everything other than nil and false itself) is true

>>  "foo bar     baz".split     # Split a string into a three-element array
=> ["foo", "bar", "baz"]
>> "fooxbarxbazx".split('x')
=> ["foo", "bar", "baz"]

>> a.sort
=> [8, 17, 42]
>> a.reverse
=> [17, 8, 42]
>> a.shuffle
=> [17, 42, 8]


>> a.push(6)                  # Pushing 6 onto an array
=> [42, 8, 17, 6]
>> a << 7                     # Pushing 7 onto an array
=> [42, 8, 17, 6, 7]
>> a << "foo" << "bar"        # Chaining array pushes
=> [42, 8, 17, 6, 7, "foo", "bar"]

>> a
=> [42, 8, 17, 7, "foo", "bar"]
>> a.join                       # Join on nothing
=> "428177foobar"
>> a.join(', ')                 # Join on comma-space
=> "42, 8, 17, 7, foo, bar"

Closely related to arrays are ranges, which can probably most easily be understood by converting them to arrays using the to_a method:

>> 0..9
=> 0..9
>> 0..9.to_a              # Oops, call to_a on 9
NoMethodError: undefined method `to_a' for 9:Fixnum
>> (0..9).to_a            # Use parentheses to call to_a on the range
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>> a = %w[foo bar baz quux]         # Use %w to make a string array.
=> ["foo", "bar", "baz", "quux"]
>> a[0..2]
=> ["foo", "bar", "baz"]

Ranges also work with characters:

>> ('a'..'e').to_a
=> ["a", "b", "c", "d", "e"]

>> 3.times { puts "Betelgeuse!" }   # 3.times takes a block with no variables.
"Betelgeuse!"
"Betelgeuse!"
"Betelgeuse!"
=> 3
>> (1..5).map { |i| i**2 }          # The ** notation is for 'power'.
=> [1, 4, 9, 16, 25]
>> %w[a b c]                        # Recall that %w makes string arrays.
=> ["a", "b", "c"]
>> %w[a b c].map { |char| char.upcase }
=> ["A", "B", "C"]

>> ('a'..'z').to_a.shuffle[0..7]       # Pull out the first eight elements.
=> ["f", "w", "i", "a", "h", "p", "c", "x"]
>> ('a'..'z').to_a.shuffle[0..7].join  # Join them together to make one string.
=> "mznpybuj"
irb(main):012:0> ('a'..'z').to_a[0..7]
=> ["a", "b", "c", "d", "e", "f", "g", "h"]