Error: GitHub API rate limit exceeded for xxx.xxx.xxx.xxx の対処方法
brew で searchとかしてたら、「Error: GitHub API rate limit exceeded for xxx.xxx.xxx.xxx」というエラーがでた。
ググったら、http://memo.saitodev.com/home/mac/#homebrew-github-api-token がヒット。 GitHub APIのlimit にひっかかったのが原因。 そりゃそうだわということで、GitHubのAccount Setting -> Applications -> create new token でPersonal Access Tokensを生成して、.bashrcにでも下記を設定する。
export HOMEBREW_GITHUB_API_TOKEN=Personal Access Tokens
解決!
migrationのchangeの話
久しぶりにrailsで開発することになって、久しぶりに「rails g model hoge」 をしたら、upじゃなくてchangeを実装するようになっていた。
でも、今まで通り、upも使える。
changeの中でcreate_tableを実行するように書くと、「rake db:rollback」でdownでdrop_tableを書かなくてもdropしてくれる。
upのときにテーブルやカラムにコメントを設定するようなsqlを実行したい場合changeでどうやるかというと、「reversible」を使うとよい。
def change create_table :hoges do |t| t.string :name, null: false t.references :foos end reversible do |rv| rv.up do execute <<-SQL comment on table hoges is 'ほげ'; comment on table hoges.name is '名前'; SQL end rv.down do # down 時に流したいSQLをながす execute <<-SQL ... SQL end add_column ... rename_column ... end end
reversibleに渡すブロックの中で、add_column,rename_columnを実行するように書くとup/downでスムーズに処理されるようになる。
詳しくは、本家で。
rbenvとrbenv-gemsetでgemをよろしく管理する
同じgemでもアプリによって依存するバージョンが違ったりする場合やちょっと試したい場合に、rbenv-gemsetをつかって、gemsetを分けておくと便利。
例えば、bundlerとかpryとか共通に使うgemは、globalと名付けたgemsetにして、railsとかsinatraとかのgemはアプリごとにgemsetを作るとはかどる。
まず下のようにglobalなgemsetを作る。 当然ながら、gemsetはrubyのバージョンごとに作る決まり。
$ rbenv gemset create 2.0.0-p247 global
作ったgemsetを確認
$ rbenv gemset list 2.0.0-p247: global
現在有効なgemsetを確認する
$ rbenv gemset active global
globalが印字されれば,上で作ったglobal用のgemsetが有効となっているので、bundlerとかをインストールすればよいと。
次にアプリ用のgemsetをつくり、存在するgemsetを確認。
$ rbenv gemset create 2.0.0-p247 example reated example for 2.0.0-p247 $ rbenv gemset list 2.0.0-p247: example global
でもこの時点でactiveなのはglobalのみである。
$ rbenv gemset active global
共通用途として作ったglobal gemsetとアプリ固有の者として作ったexample gemsetの両方を使うようにするためには、アプリのルートディレクトリに.rbenv-gemsetsファイルを作り、そのなかに「exmaple global」と記載すればOK。 そうすることで、exampleディレクトリにいるときだけexample gemsetが有効になる。
$ cd example/ $ echo example global > .rbenv-gemsets $ cat .rbenv-gemsets example global $ rbenv gemset active example global
gem envで確認するとexample,globalがGEM PATHSに設定されている。
- GEM PATHS: - /Users/hoge/.rbenv/versions/2.0.0-p247/gemsets/example - /Users/hoge/.rbenv/versions/2.0.0-p247/gemsets/global
gemをinstallするとexmaple gemsetにinstallされ、globalを汚さない。
$ bundle init Writing new Gemfile to /Users/salza/Documents/ruby-works/example/Gemfile $ echo gem \"mechanize\" >> Gemfile $ cat Gemfile # A sample Gemfile source "https://rubygems.org" # gem "rails" gem "mechanize" $ bundle install Fetching gem metadata from https://rubygems.org/.......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Installing unf_ext (0.0.6) Installing unf (0.1.2) Installing domain_name (0.5.13) Installing http-cookie (1.0.1) Installing mime-types (1.25) Installing net-http-digest_auth (1.4) Installing net-http-persistent (2.9) Installing mini_portile (0.5.1) Installing nokogiri (1.6.0) Installing ntlm-http (0.1.1) Installing webrobots (0.1.1) Installing mechanize (2.7.2) Using bundler (1.3.5) $ gem list -l *** LOCAL GEMS *** bigdecimal (1.2.0) bundler (1.3.5) coderay (1.0.9) domain_name (0.5.13) http-cookie (1.0.1) io-console (0.4.2) json (1.7.7) mechanize (2.7.2) method_source (0.8.2) mime-types (1.25) mini_portile (0.5.1) minitest (4.3.2) net-http-digest_auth (1.4) net-http-persistent (2.9) nokogiri (1.6.0) ntlm-http (0.1.1) pry (0.9.12.2) psych (2.0.0) rake (0.9.6) rdoc (4.0.0) slop (3.4.6) test-unit (2.0.0.0) unf (0.1.2) unf_ext (0.0.6) webrobots (0.1.1)
でexampleディレクトリの外でgemの状態を確認すると、globalを汚してないことが確認できる。
$ cd .. $ gem list -l *** LOCAL GEMS *** bigdecimal (1.2.0) bundler (1.3.5) coderay (1.0.9) io-console (0.4.2) json (1.7.7) method_source (0.8.2) minitest (4.3.2) pry (0.9.12.2) psych (2.0.0) rake (0.9.6) rdoc (4.0.0) slop (3.4.6) test-unit (2.0.0.0)
という感じに便利だなと。
perl環境の構築
perlbrewのインストール
perlのrbenvのようなもの。
複数のバージョンをインストールできて、使い分けできる。
\curl -L http://install.perlbrew.pl | bash
上記コマンド実行後、
Append the following piece of code to the end of your ~/.bash_profile and start a
new shell, perlbrew should be up and fully functional from there:
source ~/perl5/perlbrew/etc/bashrc
とコンソールに表示されるので、指定されたようにシェルの環境設定ファイルでperlbrew用の設定を読み込むようにする。
で、再読み込み
source ~/.bash_profile
perlのインストール
perlbrew available
でバージョンを確認して、欲しいのを入れる
perl install perl-5.18.0
インストールが終わったら、入れたバージョンのperlにスイッチする
perlbrew switch 5.18.0
cpanmのインストール
CPAN::Shellを楽に使えるようにしたもの。
perlbrew install-cpanm
cartonのインストール
perlのBundlerみたいなもの。
cpanm Carton
とりあえず、Plackをいれてみる。
mkdir ~/hoge
cd hoge
echo 'requires "Plack";' > cpanfile
carton install
Plackの起動
下記のように、carton経由でplackupする
carton exec -- plackup -e "use Plack::App::Directory; Plack::App::Directory->new({root=>'./docs'})->to_app"
感想
perlの環境構築、特にcpanでモジュールをインストールしたり、アップデートしたりするところですごい苦労した記憶があるが、ずいぶんと楽になったものだ。
参考URL
BUFFALO WZR-D1100HのNASでtimemachine
主に http://d.hatena.ne.jp/daidai7/20130225/1361806444 で説明されている通り。
他のブログ等の情報によれば、イメージ作成+「$ sudo defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1」でいい感じに書かれているが、 どうももうまくいかなくて、上記ブログにたどり着いた。
いめーじをマウントした状態で、
$ sudo tmutil setdestination /Volumes/バックアップをぶちこむイメージファイル
とやると、timemachineが認識してくれた。
sambaかafsかって話なようだ。よくわからん。 まあ、バックアップをとる必要があるような人生になってきたんだなと作業をしながら思った次第です。