DesignAssembler

備忘録に近い

2016-02-01から1ヶ月間の記事一覧

MySQLのバックアップ

バックアップについて バックアップの基本分類 バックアップの分類には以下の3種類があります フルバックアップ 差分バックアップ 増分バックアップ フルバックアップ ある時点でそのシステムで保存されている全てのデータをバックアップする方式です。 欠点…

【gem】gem in a box

gem

geminaboxはgemホスト手軽に作れるようになるgemです。 geminaboxを使う geminaboxをインストールした後適当なディレクトリを作成してconfig.ruを作成します。 $ gem install geminabox $ mkdir -p geminabox_repo/data #config.ru require "rubygems" requi…

attr_internalについて

attr_internal_*はActiveSupportの機能で、名前衝突のリスクを回避してくれる機能です。 実際の機能はRubyのアクセサメソッドと同じです。 アクセサメソッドについては以下に書いています。 hyottokoaloha.hatenablog.com あるクラスを継承したサブクラスを…

【gem】FactoryGirl

gem

FactoryGirlはRailsのgemで、テストデータの作成をしてくれます。 テストアプリケーションはdeviseを使ってユーザー登録できるようにしてます。 Gemfileに以下を記述してください #Gemfile group :development, :test do gem 'factory_girl_rails' end 以下…

boot.rb

bundlerの読み込みと設定を担当しているファイルであり、Railsの起動時(コンソールやサーバー)に実行されます。 中身はこうなっています。 ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) require 'bundler/setup' # Set up gems l…

【gem】awesome_print

gem

hirbと同じ、コンソールを見やすくするgemです。 hyottokoaloha.hatenablog.com 導入 Gemfileに以下を追加します #Gemfile group :development, :test do gem 'awesome_print' end これでbundle installします。 次に、~/.irbrcを作成します。 #~/.irbrc req…

【gem】hirb

gem

railsで使えるhirbというgemの紹介です。 ざっくり言うと、ActiveRecordの結果が見やすくなります。 before after 見やすいです。 手順 Gemfileに以下を記述します #Gemfile group :development, :test do gem 'hirb' gem 'hirb-unicode' end これでbundle i…

インデックス設計

インデックスは、データベースにおける索引で、目的の情報を見つけやすくしてくれます。 インデックスの性質 アプリケーション透過性 データ透過性 アプリケーション透過性 非正規化→正規化は大きな変更が必要だが、インデックスはインデックスを追加するだ…

今日食べたもの

とんこつラーメン

rake db:resetとrake db:migrate:reset

タイトルの2つのrakeコマンドについてです。 どちらもdbを一旦dropします。 rake db:resetはまずdropしてそのあとschema.rbに従ってdbを再構築します。 それに対し、rake db:migrate:resetはdropしたあとマイグレーションファイルを読み込んでschema.rbを更…

config.ruについて

configディレクトリに入ろうとしてタブ補完する時凄く邪魔なconfig.ruについてです。 config.ruを見てみるとこのように書いてあります。 # This file is used by Rack-based servers to start the application. require ::File.expand_path('../config/envir…

Railsのポリモーフィック

ポリモーフィック ポリモーフィックは子が複数の親に属していて、かつ全てが同じ関係性の場合に使います。 関連が多くなると、◯◯_idを書くのが手間です。 ポリモーフィックを実装するとこれを書かなくて良くなり、DRYを保てます。 railsでの実装 railsでは各…

secret_key_baseとは

secret_key_baseについてです。 railsがこんなエラーを吐くことがあります。 ERROR RuntimeError: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml` secret_key_baseの設定をしろと言…

CapistranoでAWS(nginx+unicorn)にデプロイ

Capistrano Ruby製のデプロイツールです。 編集したファイル アプリケーション側 Gemfile Capfile lib/capistrano/tasks/unicorn.rake config/deploy/production.rb config/deploy.rb サーバー側 /etc/nginx/conf.d/myapp.conf 実際の編集は以下のサイトを参…

ChefでAWSにRails+nginx+unicornのサーバーを立てる

環境構築の続きです hyottokoaloha.hatenablog.com hyottokoaloha.hatenablog.com hyottokoaloha.hatenablog.com hyottokoaloha.hatenablog.com やること chefで、railsをnginx+unicornの環境構築をします。 rails、unicornのインストール cookbooks/ruby_on…

ChefとvagrantでAWSに環境構築

最近のDevOps系記事の続きです。 hyottokoaloha.hatenablog.com hyottokoaloha.hatenablog.com hyottokoaloha.hatenablog.com vagrantでawsインスタンスにアクセスできるようにする まずはvagrantでawsインスタンスにアクセスできるようにします。 vagrant-a…

Jenkinsを使う

Jenkins Jenkinsとは、アジャイルの記事( アジャイル - DesignAssembler )で触れたCIツールです。 簡単に言えば、コマンド一つで指定した動作を自動で行うbotのようなものです。 インストールと起動 環境 OS X Yosemite 10.10.2 公式ページ(https://jenkins-…

Serverspec

serverspec serverspecは、Rubyで書けるサーバーの状態(ソフトウェアのインストール状況、起動状況、ファイルの存在等)をテストできるツールです。 文法はRubyやRSpecのものが使えます。 serverspecのセットアップ serverspecを使うにはRubyが必要です。 gem…

Chefでvagrantにサーバー構築③(nginx設定編)

流れ 前回とほぼ同じです。 テンプレートファイル作ってクックブックにそのファイルを指定するだけです。 まずはsite-cookbooks/develop_cookbook/recipes/nginx.rbを作成します。 デフォルトのnginx.confは削除します(nginx.conf.defaultあるので)。 消さな…

Sidekiq

resqueやdelayed_jobのような非同期実行を実現するgem redisが必要、redisはジョブの管理に使われている。 インストールはgem ‘sidekiq’でいい ActiveJob(Rails 4.2で実装された) (http://qiita.com/ryohashimoto/items/2f8fd685920a5318def4) (http://rails…

Chefでvagrantにサーバー構築②(レシピ作成編)

やること 昨日の記事の続きです。 hyottokoaloha.hatenablog.com 今度はvagrantにインストールした各ソフトウェアの設定を自動化します。 MySQLのユーザー、データベース作成 rubyのインストール(rbenv) railsのインストール レシピとクックブックの違い 実…

Chefでvagrantにサーバー構築①(インストール編)

Chef Chefは、RubyのDSLで記述されたプロビジョニングツールです。 流れ Chefの構築ファイルをMac上で作成 vagrantに転送 vagrantでchefを実行 今回構築する環境 OS : centos7 nginx mysql rbenv Vagrant、Chefのインストール Vagrant まずはvagrantの設定を…

今日食べたもの

まぜそばと食パン

Rubyのスコープ

スコープ スコープとは、変数の見える範囲のことです。 普通にプログラムを書いてると分かると思います。 module ModuleScope class ClassScope1 def self.method_scope1 var1 = 1 #var1はローカル変数 end def self.method_scope2 @var2 = 2 #@var2はインス…

Rubyのアクセサメソッド

ゲッターとセッター オブジェクト指向においてカプセル化という技術があります。 これはオブジェクトの変数への、外部クラスやメソッドからの直接アクセスを遮断することです。 ただ、遮断したままだと使えないのでその変数の値を返すゲッターメソッドとその…

Rubyのブロック

メタプログラミングRubyを読んでいます。 第3章の記事です。 ブロック 「呼び出し可能オブジェクト」の1つで、スコープを制御します ブロックはオブジェクト指向ではなく関数型プログラミング言語の流れを汲んでいます やること ブロックの基本 スコープの概…

継続的デリバリー

リリース感覚を短くするのが目的。デプロイ自動化とサーバー構築/運用を自動化すること。 デプロイの自動化 デプロイの自動化について すべてをバージョン管理する すべての環境を同じ方法で構築する リリース作業は自動化し事前に検証する 繰り返しテストす…

Rubyの定数

メタプログラミングRubyを読んでます。 定数 大文字で始まる参照は、クラス名やモジュール名も含めて全て定数です。 定数はディレクトリの階層のような木構造で並んでいるので、MyModule::MyClass::MyConstantのようにパスを使って指定します。 外部の定数を…

アジャイル

アジャイル 少人数かつ短い期間(イテレーション)でプロジェクトを回していく開発。 この1イテレーションには実装テスト修正リリースが含まれています。 スクラム アジャイル開発手法の1つで、チーム開発のためのフレームワークです。 デイリースクラム 今日…