Saturday, 24 March 2012

Keeping the environment updated

Use with caution, anyway.
rvm get latest --auto
rvm install 1.9.3
gem update --system # 1.3.7 # that's it for downgrading
gem update bundler  # which I actually keep in my Gemfile
bundle update

Saturday, 17 March 2012

Useful Shell commands in Linux (terminal)

find . -name file_name # path first option without equal
grep -rn string . --context=5      # path last

# count the lines of ruby
( find ./ -name '*.rb' -print0 | xargs -0 cat ) | wc -l

rails -e production
rake x:y x:z RAILS_ENV=test # chain tasks and env is loaded only once
rails c production --sandbox 
rails dbconsole -p'whatever'
tailf log/development.log | grep -v ECONNREFUSED -E 'Processing|Render|Parameters' # show actions and templates only
ssh user@host 'ls -l'
scp -C user@host /tmp/db.sql /tmp/db.sql # -C will compress the data over the wire
curl -Lk --user user:pwd --data "param1=value1&param2=value2" http://url
service --status-all
netstat -an | grep "LISTEN " # check the open ports
free -m # check the ram
df -H   # check the disk
curl --user usr:pwd -Lkv --data "param1=value1&param2=value2" www.url.com/post_here
scp -C urs@url:/origin/ destination/ 
ncdu / # disk usage
 

Friday, 16 March 2012

Git cheatsheet

# Search for a word in log diff
git log -S"def email_required"

# display branches in activity order
git for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname)' refs/heads refs/remotes 

# checkout previous branch
git checkout -
git checkout @{-1}
# get rid of the latest changes and restore to the sha
git checkout sha1

# undo latest pull
git reset HEAD@{1}
git checkout .

# discard conflicting changes in a dir (after merge)
git co --theirs dir/ # discard their changes
git co --ours dir/   # discard our changes

# stash
git stash save "name of the stash"
git stash apply
git stash help

# checkout a new branch from origin
git checkout -b new origin/new

# tags
git tag "tag-name"
git push --tags

# bisect for debugging
git bisect start
git bisect bad
git co 32c4bf6 # (known good sha)
git bisect good

# create a patch
git format-patch -1 sha1
# and to apply it
git am 0001-commit-name.patch 

# ignore a committed file
# add the file to .gitignore
git rm --cache your_file

# ignore the repo
git update-index --assume-unchanged .ruby-version

# delete a remote branch
git push origin --delete branch_name

# rename a branch
git branch -m old_name new_name

# all your commits on any branch in the last x months
git log --pretty=format:"%ad:%h:%B" --date=short --reverse --all --author=erik  --since=1.day.ago

# count the lines of code of your app
git ls-files app/ | xargs wc -l

# undo a merge that was already pushed:
git revert -m 1 merge_hash
#
#
Here great post on git tips .gitignore_global (add .rbenv-gemsets)

Here's my git config

Git style guide

Best practices 

Monday, 12 March 2012

A Ruby on Rails developer environment

Ryan Bigg's explains how to install Rails, I trust him
Then you'll need postgres
echo "-d=postgresql --skip-bundle -T" > ~/.railsrc
# $ rvm gemset create opera_wbe
# $ gem install bundler --no-rdoc --no-ri
NOTE: the `-T` option will change the `config/application.rb` as this following top group instead of loading `rails/all` (very nice!):
# 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"

module OperaWbe
  class Application < Rails::Application
    # migration with numbers (001, 002, ...) in stead of timestamp
    config.active_record.timestamped_migrations = false

    # in production actually
    # prepend assets path
    # config.action_controller.asset_host = ASSETS_PATH

    # in development actually
    # Remove assets logging
    config.assets.logger = false # ~only~ one line each asset request

# [...]
Also I find the following files very useful
~/.irbrc                     # with global functions to call in the console
~/workspace/.rvmrc           # which loads my @new gemset
~/workspace/every_app/.rvmrc # with the following...
rvm ruby-1.9.2-p290@new # with bundler and rails only
rvm gemdir              # show the gemdir everytime you change project
# .irbrc
puts 'Using irb console helper functions from ~/.irbrc'

# returns the list of methods not inherited from Object
# it will not show methods overwritten from `Object.new`
# eg: `y ml String.new`
def ml(object)
  (String.public_methods - object.methods).sort
end
Then my prompt looks like this:
21:43:02-6950 - ~/workspace> cat ~/.bashrc
[...]
 # some more ls aliases
 alias ll='ls -l'
 alias la='ls -A'
        alias lo='ls -o'


# colorful, with time, history id and path (also in window title)
# export PS1="\[\e]0;\w\a\]\e[1;36m\t-\! - \w>\e[m "
export PS1="\[\e]0;\w\a\e[1;36m\]\t-\! - \w>\[\e[m\] "
# TODO: git branch in prompt


# ror workspace available everywhere
export CDPATH=$CDPATH':/home/erik/workspace/'

## big bash history
export HISTSIZE=20000
# append all commands to the history file, don't overwrite it at the start of every new session
shopt -s histappend

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.
cd .
And yes, I know, at the moment without without the git branch, it's messing with the color.
echo 'gem: --no-ri --no-rdoc' >~/.gemrc # never install gem doc
A couple of config for git, get the book here
[color]
 diff = true
 status = true
 branch = true

[alias]
 co = checkout

Setup Sublime Text and customize it as such

Wednesday, 22 February 2012

Sunday, 5 February 2012

blogger sucks

Yes it does but it gets better with SyntaxHighlighter, and here is good tutorial to use it As there isn't any easy brush for coffeescript I'm currently using the ruby one, and the javacript one for haml.
brush list

Configuring redis 2.4.7 on Ubuntu 10.04

TODO: this post is still a draft, if you're a visitor, please move on

* install *

the download official page

not enough, then:

AAA! maybe I'd avoid adding it to the auto-execution list, which happens with the following command: sudo update-rc.d redis-server defaults

ijonas.com

run it with: sudo /etc/init.d/redis-server start

* customization *

/etc/sysctl.conf

sysctl vm.overcommit_memory=1 # to avoid reboot