DesignAssembler

備忘録に近い

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

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

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