DesignAssembler

備忘録に近い

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つで、チーム開発のためのフレームワークです。 デイリースクラム 今日…

Rubyのオープンクラス

オープンクラス Rubyには定義済みクラスに新しくメソッドを追加する機能があります。これをオープンクラスと言います。 継承やミックスインをせずにクラスを拡張できます。 また、既存のメソッドを上書きすることをモンキーパッチと言います。 class Fixnum …

Railsの単一テーブル継承

単一テーブル継承(STI)とは 普通は複数のテーブルが必要になる関連したテーブルを1つのテーブルにまとめる事です。 db構造が簡単になりDRYになります。 例えば、JapaneseテーブルとAmericanテーブルがあったとして、JapaneseテーブルとAmericanテーブルをRac…

キーワード引数(Ruby)

キーワード引数 Ruby2.0からキーワード引数が導入されました。 こんなコードです def keyword_func(key:) puts key end > keyword_func(key: "value") value > keyword_func(key: 1) 1 > keyword_func(key: {key1: 1, key2: 2}) {key1: 1, key2: 2} > keywor…

スキーマについて

スキーマとは データベースにおいてデータ型やデータ構造を示したものです。 railsでの使われ方 Rails(ActiveRecord)では、マイグレーションによってスキーマが作成されます。スキーマがあることによりデータベースに依存せず一貫したテーブルを構築すること…

Rubyのselfについて

メソッド名にselfをつけるとクラスから直接メソッドを呼ぶことができます。 つまりクラスメソッドとして扱います。 メソッド名にselfをつけないと指定したオブジェクト(レシーバ)に対してしかそのメソッドを使うことができません。 つまりインスタンスメソッ…

gem作ってRailsで使う

bundlerでgem作ってrailsで読み込みました。 作るgemの機能は、引数に’foo’と与えると’bar’を返すというだけです。 gem作成 $ bundle gem test_gem lib/test_gem.rbに欲しい機能のメソッドを書きます。 こんな感じです。 require "test_gem/version" module …

MySQLのenumとRailsのenum

enumとは enumとは列挙型の事です。 定数を名前空間でまとめたものと自分は認識してます。 ほとんどの場合enumは可視性のために使われます。 定数でも同じ機能は実装できるのですが(実装だけなら定数の方が楽)、コードを書くと何を使ってるのか分かりにくく…

Rubyのクラスとモジュールについて

Rubyのクラスとモジュールについて、参考リンクを載せながら説明します。 どんな時にモジュールが使われるか インスタンス化せずにメソッドを格納したいときや、関連するクラスをまとめたいとき、つまり名前空間として使いたいときモジュールを使います。例…

bundlerとGemfile.lockの取り扱い

bundlerの役割 bundlerは複数人で同じアプリケーションを動かす時に、gemのバージョン差異で悩まされないように作られました。 このbundlerにより生成されるGemfileとGemfile.lockがあれば他の人と同じ環境を構築できます。 GemfileとGemfile.lock Gemfileは…

Facebookのいいねボタンを押すと「確認」と表示されてしまう

今作ってるサイトにFacebookのいいねボタンを設置しました。なんやかんやテストしていくうちにボタンを押すと「確認」と文字が表示されるようになりました。どうやら、いいねのテストで押したり消したり繰り返していたら怪しいサイトと認識されたみたいです…

階層的凝集型クラスタリングで画像分類

クラスタリングクラスタリングとは観測データの距離の近いものをグループ化することで、教師なし学習に分類され今回は階層的凝集型クラスタリングについて説明します。 階層的凝集型クラスタリング近いものを同じクラスタ、遠いものを別クラスタに振り分ける…

僕のポケモン図鑑

去年の夏ゲームボーイアドバンスSPとエメラルドを買いました。今もたまに遊んでいます。 現在のステータスはこんな感じです。ご覧の通りポケモン図鑑は53匹しか集まっていません。ゆくゆくは図鑑コンプリートしようと思っていましたがきっと無理でしょう。ど…

ActionMailerで環境を判別してメール送信前にsubjectやtoを変更する

Railsから簡単にメールを送信できるActionMailerについてです。概要Railsアプリケーションからメールを送る際、production以外の環境ではメールの宛先や件名を変えたい時の構築方法です。 ここではgmailを使用してメールを送信します。記事書いたらただただA…

sqlite3のインストール時にエラー

gem install sqlite3が通らない以下のようなエラーが出ます Building native extensions. This could take a while... ERROR: Error installing sqlite3: ERROR: Failed to build gem native extension. /Users/ryouta/.rbenv/versions/2.2.0/bin/ruby -r ./…

rails sが通らない

rails sを打つと以下のエラーが出ました。 `bind': Address already in use - bind(2) for 0.0.0.0:3000 3000番ポート使われてるみたいです。1.立ち上がってる別のrailsサーバーを落とす以下のコマンドで立ち上がってるrubyプロセスを確認してください。 $ p…

public以下の静的ファイルにルーティングを通す

デザイナーからもらった静的ファイル、組み込むのだるいしpublicに置きたい。でもルーティングは通したい。そんな時のためのメモです。例 public/about.htmlにtop#aboutとルーティングしたいやり方 topコントローラーにaboutアクションを追加して以下のよう…

rails環境構築小メモ

自分用のメモvagrantのcentosでの環境構築のメモがなかったので作っておく以下でvagrantにアクセスする $ cd Vagrant $ vagrant up $ vagrant ssh rubyのインストールはこんな感じ $ rvm install ruby-2.1.6 railsが無いと言われたら $ gem install rails bu…

集合知プログラミング第4章のエラー

統計、解析、最適化、学習の実践入門書のような集合知プログラミングを読んでいます。いい本なのですが、あまりにも誤植が多いことで有名です。日本じゃありえないクオリティです。そしてコードも綺麗とは言い難いです。集合知プログラミング作者: Toby Sega…

rmagickのインストールが失敗する

bundle installしたらrmagickのインストールでコケました。 Package MagickCore was not found in the pkg-config search path. Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable No package …

gem install mysql2でエラーが出る

MySQL 5.6 をクライアントとして使うときに注意するポイントwww.sssg.orgこのページがかなり参考になりました。非常にありがとうございます。(本当にただのメモです)

サブドメインでアクセスした時にデータベースを切り替える(rails)

ステージングをサブドメインに設定して(staging.*****.jp)そのアドレスの時接続データベースを切り替える方法です。環境・EC2(CentOS) ・RDS(MySQL) ・ムームードメイン前提 ムームードメインでドメイン取得済み route53でドメイン設定済み 流れ・ムームード…