ローカルにgitリポジトリを作ってpushとかする方法

プロジェクトhogeを作成したいとき

以下のような手順になる

リモート(ローカル)になるリポジトリ作成

$ mkdir ~/Documents/local-repo   // 単純に各種プロジェクトをまとめるディレクトリ
$ cd ~/Documents/local-repo
$ mkdir hoge.git     // hogeプロジェクトのリモート(ローカル)になるディレクトリ
$ cd hoge.git
$ git --bare init      // hogeプロジェクトのリモート(ローカル)を作成

hoge.gitではない適当なディレクトリに移動して

$ mkdir hoge
$ cd hoge
$ git init
$ git push ~/Documents/local-repo/hoge.git master

注意!!

上記でpushできると書いたけど、
一回ファイルか何か作って、commitしておかないと、pushするときエラーがでた;;

bitbucket - Git error: src refspec master does not match any error: failed to push some refs - Stack Overflow

これでOKだが、以後pushするたびに、毎回この長いのを打たないといけないので、

$ git clone ~/Documents/local-repo/hoge.git

してきて、以後そこで開発したほうがよい。

zshでRoRの補完

rails の zsh 補完関数書いた - Kōenji
を使わせていただいたら、うまくいった!

ただ、前回の記事で、

$ b-rails

というaliasを作っている手前、 b-rails だと補完できない。

そこで、
_b-railsを作った

ファイル名を_b-railsに変えて、中身は以下のdiffのように書き換えたらうまくいった(そこそこ試行錯誤した なんといってもfpathさえ知らなかったのだから...)。

$ diff _b-rails _rais 
1c1
< #compdef b-rails
---
> #compdef rails
17c17
< _b-rails() {
---
> _rails() {
23c23
<     _call_function - "_b-rails_${words[1]}" || _nothing
---
>     _call_function - "_rails_${words[1]}" || _nothing
556c556
< _b-rails "$@"
---
> _rails "$@"

RoRの構築方法

.zshrcに次のalias, functionを作っておく

alias b='bundle exec'
alias b-install-local='rbenv exec bundle install --path=vendor/bundle && rbenv rehash'
alias b-rails='bundle exec rails'
function b-rails-new {
  bundle exec rails new $1 --skip-bundle
}
alias b-rake='bundle exec rake'

Gemfile

$ bundle init
source "https://rubygems.org"

gem "rails"

インストール

$ b-install-local

railsプロジェクト作成

$ b-rails-new プロジェクト名

railsプロジェクトセットアップ

$ cd プロジェクト名
$ b-install-local

サーバー起動

$ b-rails s

bundlerの構築方法

bundlerインストール

$ gem install bundler
$ rbenv rehash

Gemfile作成

bundlerを使いたいプロジェクトで

$ bundle init

Gemfile編集

入れたいgemを書く

入れたいgemをインストール

$ bundle install --path=vendor/bundle

が、これだと、rbenvのRubyバージョンを使ってくれないので、

$ rbenv exec

を付けて

$ rbenv exec bundle install --path=vendor/bundle
$ rbenv rehash

alias

.zshrcに

alias bundle-install-vendor-bundle='rbenv exec bundle install --path=vendor/bundle && rbenv rehash'

とか書いておくと便利かも

rbenvの構築方法

git から rbenv 導入

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

.zshrcの書き換え

パスを通す
$HOME/.rbenv/bin:

をパスの先頭に追加

rbenv initがシェル起動時に呼ばれるように
$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc

で .zshrcを書き換える

Rubyをインストール(各種バージョン毎に行う必要あり)

$ rbenv install -l

でインストールできるバージョン一覧を確認。

$ rbenv install Rubyバージョン

でインストール

$ rbenv rehash

新しくRubyをインストールしたときにやらないといけないみたい

$ rbenv global Rubyバージョン

これで、

$ ruby

で普通にrbenvで指定したバージョンが使えるようになる。

rbenvコマンド(再掲あり)

$ rbenv install -l                          // インストールできるバージョン一覧
$ rbenv install Rubyバージョン     // Rubyインストール
$ rbenv versions                          // インストール済みのRuby一覧
$ rbenv rehash                            // よくわからないけどRubyインストールしたらやらないとだめみたい
$ rbenv global Rubyバージョン    // 全ディレクトリでこのRubyのバージョンを使う
$ rbenv local Rubyバージョン      // このディレクトリだけでこのRubyのバージョンを使う

-------------- 以下の方法で先に行ったがなんか上記の方が楽そう....... --------

違いがわからん

brew

$ brew install openssl
$ brew install readline

~/zshrcを書き換え系

パスを通すため

$HOME/.rbenv/bin:

をパスの先頭に追加

$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc

で rbenv init が実行されるように

Rubyのインストール(バージョン都度 インストールの必要あり)

$ RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0

rbenvコマンド

$ rbenv versions
$ rbenv global Rubyバージョン

説明

$ rbenv global Rubyバージョン

をすると以降

$ ruby

でrbenvで指定したRubyが使われる。