読者です 読者をやめる 読者になる 読者になる

そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Docker - Docker Hub でイメージを共有する

(adsbygoogle = window.adsbygoogle || []).push({}); Docker Hub にイメージを共有することで、グループ内での共有が簡単になるようだ。 (公開範囲はGitHubと同じで、無料は public のみでprivateは有償) Signup する https://hub.docker.com/account/signu…

Docker - Dockerizing してみる

(adsbygoogle = window.adsbygoogle || []).push({}); Dockerfile からDockerイメージを作成して環境をためしてみた。 chef と同じように、コード(こちらはGo言語)で構成管理を記述できる。役割毎にDockerコンテナーを作成することで、1つのOS上で環境を構築…

Docker - 手軽に使えそうな仮想環境を試してみた

(adsbygoogle = window.adsbygoogle || []).push({}); Docker は Linux上で動作するコンテナー型と呼ばれる仮想化ソフトウェア。 ハイパーバイザー型に比べて、OS起動時のオーバーヘッドが少なくとても早い。いまさら聞けないDocker入門(1):アプリ開発者…

chef + vagrant - 仮想環境をラクにする

(adsbygoogle = window.adsbygoogle || []).push({}); vagrant (べいぐらんと) を使って仮想環境をラクに使えるようだ。 chef のテストに便利。設定ファイルを用意したり概念を理解したりで 敷居がちょっと高いが、慣れれば簡単だった。vagrantの使い方を説…

MySQL - バージョンアップしたら起動できなくなった

(adsbygoogle = window.adsbygoogle || []).push({}); Oracle にある RPM を使って MySQL を 5.6 にバージョンアップしてみた。 OSは CentOS 6.5。 起動してみると、エラーが。。。 # /sbin/service mysql start Starting MySQL.The server quit without upd…

SSL - パスフレーズを入力しないでApacheを起動するには

(adsbygoogle = window.adsbygoogle || []).push({}); Apacheの起動時に、鍵のパスフレーズを入力しないで起動する。 鍵のパスフレーズを設定していると、Apache起動時に鍵のパスフレーズの 入力が必要。ただし、OS起動時に自動起動できなくなってしまう。パ…

rails - CRUDのまとめ

(adsbygoogle = window.adsbygoogle || []).push({}); 新規作成 レコードを新規作成する。 create Entry.create title: "タイトル", body: "本文" INSERT INTO "entries" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["body", "本…

rails - クエリの基本(2)

(adsbygoogle = window.adsbygoogle || []).push({}); 特定のフィールドを取得する select を使う User.select(:name) SELECT name FROM "users" 複数のフィールド名を指定できる User.select(:id, :name) SELECT id, name FROM "users" フィールド名は,区切…

rails - クエリの基本

クエリの流れ オプションからSQL文を組み立てる SQLを発行し、データベースからデータを取得する 取得したデータから Rubyオブジェクトを生成する after_find コールバックを呼び出す クエリを行うメソッド Model.take(limit) レコードに格納されている最初…

rails - ActiveRecord の コールバック

基本 オブジェクトの生成・更新・削除のタイミングで呼び出されるメソッド トリガとなるイベント(validation,saveなど)の前(before)と後(after)に登録可能 コールバックはメソッドチェーンに追加される。 before_xxx で false を返すか例外を発生させると、…

rails - has_many through:

他対他 の関連を参照する 元々は他対他を直接参照できるようにするもの。 +-------+ +-----------+ +-----+ |Product| 1---n |OrderDetail| n---1 |Order| +-------+ +-----------+ +-----+例えば、特定の Order中の Productを調べたい場合など。 class Prod…

rails - ActiveRecord Migration のまとめ

基本 db/migration 以下に YYYYMMDDhhmmdd_XXX_YYY.rb のファイルを作成する Migrationのファイル名とクラス名は一致していないとダメ ファイル名: YYYYMMDDhhmmdd_create_users.rb クラス名: CreateUsers 自分で設定ファイルを作成可能だが 基本的には rail…

chef - git レポジトリを扱う

(adsbygoogle = window.adsbygoogle || []).push({}); 最近のアプリケーションは git clone してパスを設定するだけ、 というものも増えてますが、chefにも git リソースがあります。git のリモートリポジトリと同期をとり、更新を検出してくれる 点で execu…

chef - knife solo を使う

chef-solo を簡単に使うには knife solo を使います。 chef-serverを使わなくてもリモート実行できるので楽に一元管理できます。 前提 以下の準備が必要です。 ssh でリモートアクセスできること (パスフレーズ無が好ましい) sudo でroot権限になれること イ…

rails - 便利なコマンド

ルーティングを表示する rake routes で、HTTPのメソッド名・パスとコントローラ・アクションの対応テーブル を出力できる。 $ rake route Prefix Verb URI Pattern Controller#Action welcome_index GET /welcome/index(.:format) welcome#index posts GET …

rails - Mysql2::Error: Incorrect string value

(adsbygoogle = window.adsbygoogle || []).push({}); 次のエラーがでた場合。 Mysql2::Error: Incorrect string value: 原因を調べる おおむね、データベースの文字コードを確認する。 たいてい latin1 とかになっている。 $ mysql -uuser -p my_db mysql >…

rbenv - bundler と組み合わせてローカルにインストール

複数のアプリケーションでバージョン違いのライブラリを 入れるなどしたい場合、bundle を組み合わせて使います。 rails 4.0.2 を vendor/bundle 以下にインストールする例 Gemfile を作成 source "https://rubygems.org" gem "rails", "4.0.2" bundle insta…

chef - ohai でシステム情報を確認する

chef-client (chef-solo) で使用している、システムのインベントリ情報を JSON形式で出力するツールが用意されています。 $ ohai { "languages": { "ruby": { "platform": "x86_64-linux", "version": "2.0.0", "release_date": "2013-11-22", "target": "x8…

chef - レシピの基礎(4)

ユーザやグループを作成したい システムのユーザおよびグループを追加するには、userリソースとgroupリソースを使います。 user user "www" do comments "web server" home "/home/www" shell "/sbin/nologin" uid 200 gid 200 supports :manage_home => fal…

chef - レシピの基礎(3)

サービスの設定をする サーバ類の起動・終了などをchef-clientで管理するには service リソースを使います。次の例では、mysqld をマシン起動時に自動起動させるようにし、 かつ、mysqldサーバを起動します。 service "mysqld" do action [:enable, :start] …

chef - レシピの基礎(2)

コマンドを実行する execute リソースを使います execute "do command" do command "foo bar" end packageリソースなどとは異なり、冪等性(何度操作しても 同じ状態となる性質)が確保されません。not_if / only_if などで制御する必要があります。 execute…

chef - レシピの基礎(1)

一部を変数として使いたい Attributes を使います。設定方法は、/cookbooks/attributes/default.rb に、 以下のように指定します。もちろんruby の文法が使えます。attributes/default.rb default["ruby"]["version"] = "2.1.0" recipe中で使用するには node…

chef - サーバ構成を管理する

サーバの設定(ソフトのインストールやサーバの起動など)をスクリプト に記述して、更新対象のサーバで実行させるツールです。 このツールで、同じ役割のサーバの状態を同じに保つことができます。 (もちろんデータベースの中身やログなどは異なりますが)…

Ruby - rbenv で複数バージョンを切り替える(2)

前回の続き rubyのバージョンをプロジェクト毎に切り替える 例えば /home/hoge/app 以下で実行するスクリプトのrubyバージョン を切り替える場合 $ rbenv local 2.1.0とします。/home/hoge/app/.ruby-version が出力されます。 この中身を見れば使用するバー…

Ruby - rbenv で複数バージョンを切り替える(1)

(adsbygoogle = window.adsbygoogle || []).push({}); rbenv はrubyのバージョンを 切り替えるツールです。以前rvmを使っていましたがいろいろ環境変数やら を汚す悪いクセがあるのとrailsで推奨されているのでインストール してみました。 インストール方法…

ruby 落ち穂拾い

リリースされて1カ月後に ruby 2.1.0 の存在に気づき、時の流れを感じてます。 今回は落ち穂拾い。 手続きオブジェクトのリテラル表記 ->(arg) lambda と同じく手続きオブジェクトを返します。 sum = ->(a,b) { a + b } sum.call(1,2) # =>3 coffeescriptに…

DB - MongoDB(3) mongoid

mongoid ( MongoDB を ruby から使うライブラリの一種です。 ODMであり ActiveRecordと同じような記述ができるので rails から使うには便利。 単体でも使えます。 Rails4 から動かす アプリケーションを作成します。 ActiveRecords を使わないので -O (--ski…

DB - MongoDB(2)

DB - MongoDB(1) - そういうことだったんですね の続きです。 更新 update() を使います。第1引数に更新前のドキュメント、第2引数に新しいドキュメントを指定します。 ドキュメントは完全でなくてもかまいません。(一部を変更する) > db.books.update({ t…

DB - MongoDB(1)

MongoDBについて http://www.mongodb.org/ ドキュメント指向のNoSQLなDBMSです。スキーマが無いのでリレーショナルデータベースよりも楽ができます。 ウリはスケーリングの容易さとRDBの良さであるクエリや検索を充実させているところのようです。オープンソ…

Rails - ER図を作成するアプリケーション erd

Rails 3 のアプリケーションからER図を生成するライブラリが rails-erd です。 リバースエンジニアリングしたいときに便利なツールです。 Graphviz | Graphviz - Graph Visualization Software を使用していますので別途インストールが必要です。 ER図のサン…

Ruby - 2Dゲームライブラリ Gosu を試す(2)

Ruby - 2Dゲームライブラリ Gosu を試す(1) - そういうことだったんですね の続きです。 背景/画像を表示する <code>Gosu::Image</code>クラスを使います。オブジェクトを生成して <code>draw</code> メソッドを呼ぶだけです。

Ruby - 2Dゲームライブラリ Gosu を試す(1)

2Dのゲーム開発環境です。Ruby(とC++)で実装できます(ただしデスクトップのみ。iOSはC++)。 ゲーム用のフリー素材集など使えばシナリオと少しのコードで立派なゲームを作ることができます。 https://github.com/jlnr/gosu

Ruby - 順列と組み合わせのまとめ

// ).push({}); // ]]> データ分析やゲームなどでパターンの組み合わせや順列が欲しい場合が多いと思います。 Ruby では Array クラスにこれらを生成する便利なメソッドが定義されています。 組み合わせ(combination) N個の要素からM個を取り出し、順番を考…

git - windows から使う

git

分散型のバージョン管理システムgitをwindows版で使います。 git本体 msysgit - Git for Windows - Google Project Hosting kdiff3 - GUIな差分検出ツール KDiff3 プロジェクト日本語トップページ - SourceForge.JP git GUIクライアント gitextensions - Git…

Ruby - 謎の `require':cannot load such file エラー

Windows環境でさっきまで動いていたプログラムが動かないなぁ、と思ったときの話。LOAD_PATHなど正しく設定してもうまく読み込めなくなってました。

Ruby - コードの不吉な部分を調べる(reek)

Ruby のコード中のエラーやバグ(を生みそうな)部分を検出してくれるツールが reek です。

Rails/Ruby - テストカバレッジを調べる simplecov

自分の書いたテストが、全体コードの何割を占めているかを示す指標をテストカバレッジといいます。数値化されるのでテストの妥当性の検証に役立ちます。 今回はそのカバレッジを調べるRubyライブラリ simplecov を調べてみました。

Ruby - 2.0.0 の新機能 - Module#prepend

前回に引き続きruby-2.0の新機能を調べてみます。 Module#prepend です。

Ruby - 2.0.0 の新機能 - キーワード引数

Ruby 2.0.0 の新機能としてキーワード引数というものがあります。引数名を与えて、引数の順序を気にせず設定できる、というものです。 PythonやObjective-C などでも有名ですね メソッド定義 引数の部分の定義をハッシュリテラルに似た(というかほぼ同じ)…

Ruby - Twitter と連携する

Twitter には REST API があり、ツイートやフォロー、タイムラインの取得などアプリに組み込むことができます。 フォローする、リツイートするなどの機能も見かけますね。 curl で十分、といわれるかもしれませんが、その準備は結構面倒なので、 それを解決…

Rails -メンテナンスモード

// 今日は風変わりなプラグイン turnout です。 https://github.com/biola/turnout メンテナンス期間のみ全てのアクションの画面を切り替えたい!っていうときに使います。

Rails - Tire と 全文検索エンジン Elasticsearch (3)

Rails - Tire と 全文検索エンジン Elasticsearch (2) - そういうことだったんですね の続きです。 Tire用のアプリケーションを作成 rails のアプリケーション searchapp を作成します。今回はDBはsqlite3を使います $ rails new searchapp Gemfile に次の行…

Rails - Tire と 全文検索エンジン Elasticsearch (2)

Rails - Tire と 全文検索エンジン Elasticsearch (1) の続きです はじめに 今回の例は elasticsearch をバックグラウンドで動作させます。 bin/elasticsearch で実行します。 Elasticsearch のインデックス 検索エンジンの要であるインデックスを操作します…

Rails - Apache との連携 Phusion Passenger

本番環境で使う場合は WEBrick だと心もたないし管理が面倒で、 実環境では Apache や Nginx などのWebサーバで動かすことが多いです(Unix/Linux環境の場合) 今回はPhusion Passengerについて RVMと組み合わせて導入する方法をまとめます。 前提 RVMは rails…

Ruby - RVM の Multi-User mode について

RVM (Ruby Version Manager) はRubyのバージョン切り替えを簡単に行う便利なソフトウエアです。 https://rvm.io/ 通常のインストール (Single-User instrations) インストールも簡単。通常はユーザ毎にインストールするのが普通です。 \curl -L https://get.…

Rails - Tire と 全文検索エンジン Elasticsearch (1)

Elasticsearch は、Apache Lucene ベースの検索エンジンです。 fourcesquare や github 内部で使われています。 Tire という Rails プラグインのクライアントが出ています。 今回は、はじめに elasticsearch に調べて動かしてみます。 Apache Lucene(ルシー…

Rails - sunspot で全文検索をする(2)

Rails - sunspot で全文検索をする(1) - そういうことだったんですね の続きです。 each_hit_with_result を使う ブロック引数として hit, result の2つ渡されます。 result は検索対象モデルのオブジェクトが返るため属性にアクセスできます。 @search.each…

Rails - sunspot で全文検索をする(1)

rails に sunspot という全文検索のプラグインがあります。 solrという検索エンジンを使っており、モデルに数行コードを追加するだけで、インデックスを動的に作成されます(再構築も可) https://github.com/sunspot/sunspot

Rails - pagination プラグインを使う

最近は kaminari の方がかっちょよい、みたい。 使い方の流れ Gemfile gem 'kaminari' コマンド実行 $ bundle コントローラでfindやallしている部分を書き換え。表示件数はデフォルトで25件。 @users = User.page params[:page]

Rails - 入れ子構造のモデルを更新する(2)

accepts_nested_attributes_for の続きです。 子要素となるテーブルは新規追加?or更新? :id で挙動がかわります。 子要素の :id パラメータを指定すると更新(UPDATE)、指定しない場合は挿入(INSERT)となります。 例)Blog - Author のようなモデルがあった…