サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
コーヒー沼
jetglass.hatenablog.jp
踏み台サーバ経由で git する方法をメモしておく。 Linux でも同じ、.ssh/config を編集して踏み台サーバ経由(SSHトンネル)する方。 あくまで Mac(ローカルマシン)から、git コマンドを直接叩きたいときの設定。 踏み台サーバ上で作業する場合の設定ではない。 踏み台サーバ経由(SSHトンネル)する ~/.ssh/config の設定 前提条件 bastion(踏み台サーバ) tsuyacchi というユーザを追加済み 公開鍵・秘密鍵を設定/設置済み Mac(ローカルマシン)側には秘密鍵(~/.ssh/tsuyacchi_id_rsa) サーバ側には公開鍵(cat tsuyacchi_id.pub >> ~/.ssh/authorized_keys) git_repository(git サーバ) bastion からのアクセスのみ許可 gitolite を使っていて
概要 Rails でページング処理といえば、kaminari だと思う。 github.com kaminari で Ajax のページングもできるようだが、 AdventCalendar - kaminari徹底入門 - Qiita jQuery の DataTables プラグインと連携して、ページング(一覧画面)を実装する。 (ページ送りは kaminari 使います・・・) github.com この gem を利用することで jQuery の DataTables プラグインを簡単に導入できる。 DataTables プラグイン自体のサンプルは下記。 DataTables example - Ajax data source (arrays) 検索・ソート・件数指定など、javascript 側で実装してくれている。 件数が少ないようであれば、全件データを JSON形式で Dat
概要 Rails4.2 で新規プロジェクトを立ち上げることになったらテストをどうしようか。 現時点で考えうる全部入りを試してみようと思う。 導入する gem やライブラリは下記。 Rspec Ruby向けテストフレームワーク Capybara WEBアプリケーションのテストを補助するライブラリ PhantomJS ヘッドレスブラウザ Poltergeist Capybara を PhantomJS で動作させるためのドライバ Turnip Rspec を Gherkin 書式に対応させる Jasmine Javascript向けテストフレームワーク FactoryGirl テストデータを柔軟に生成 Guard ファイル変更を監視して任意のコマンドを実行 Rubocop 静的解析ツール(コーディング規約チェック) Spring アプリケーションプリローダー 何ができるかというと、 単体テスト
docker 導入に関する記事を別で書くつもりだが、 今やっているプロジェクトで docker build で大ハマりしたので、 その解決方法をメモしておく。 概要 CentOS 7 Docker 1.6.2 上記環境だが、特に yum のリポジトリを更新することもなく、 下記を実行して Docker 1.6.2 をインストール。 yum install docker docker-selinux チームで管理している Dockerfile があるので、 それを落として色々インストールした後、 docker build して docker pull する予定だった。 「no such file or directory」のエラーでビルドできない Dockerfile は他の方が docker build 成功しているので、 俺の環境でもできるはずなのに build がどうやってもうまくいか
概要 Rails サーバからショートメールを送信する方法。 http://qiita.com/kidach1/items/cd63063fa98aaa5030bd 記事を残してくれている方がいるので、この記事を元にショートメールが送信できるまでを試す。 Twilio アカウント作成 http://twilio.kddi-web.com/ へアクセスする。 右上のサインアップをクリックする。 名前とメールアドレス、パスワードを設定して、ボタンをクリックする。 次の画面で電話番号の入力を求められるので入力して、ボタンをクリックする。 その電話番号にショートメールで認証コードが送信されるので、 認証コードを入力してボタンをクリックする。 認証が通ると Twilio の管理画面へ遷移する。 Twilio SMS用電話番号の取得 SMS を送信するには電話番号を購入する必要がある。 上部のメニュー「
実装例 class Kuso < ActiveRecord::Base has_many :unchis validate: buriburi_unchis def buriburi_unchis errors.add(:unchis, "oops!") if unchis.size > 1 end end ポイントは unchis.size。 以前記事にした Railsで階層化された複数モデルに対応するフォームの作り方 - Shred IT!!!! のようにフォームからのパラメーターを利用したい場合は size メソッドを使うこと。 count メソッドにしてしまうと、DB に接続してレコード数をカウントしてしまう。 逆に DB のレコード数が欲しければ count でいい。 まとめ フォームから受け取った要素を数える場合は hoge.size DB のレコードを数える場合は hoge.
Rails で簡単なアプリを作ろうと思っているが、ソースの管理に困る。 ローカルPCでソース管理するのも嫌だし、 サーバを借りているわけでもない。 GitHub でソース管理することも考えたが、 プライベートリポジトリが欲しい... 検索していると下記サイトを発見。 www.find-job.net 比較を見ていて BitBucket が気になった。 bitbucket.org Atlassian を利用してアジャイル開発するプロジェクトに携わっていたことがあるのだが、 アジャイル開発のタスク管理がしやすい JIRA、 情報共有に特化した高機能ウィキ Confluence、 コードレビューが捗る Crucible、 などなど使い勝手が非常に良かった。 ということで、BitBucket でプライベートリポジトリを作ってみる。 サインアップ ①https://bitbucket.org へアク
概要 MacBookPro から iMac へ Vagrant + VirtualBox で構築した環境をコピーする。 開発中のソースは GitHub で管理されているのでどちらのマシンでも作業できるようになる。 コピー元 = MacBookPro コピー先 = iMac この仮想環境は CentOS 7 なので、ボックス名は cent7 にしている。 [コピー元作業]package.box を作成・転送する MacBookPro でまず下記を実行してみる。 # vagrant box list cent7 (virtualbox, 0) box として cent7 が取り込まれていることがわかる。 cent7 の Vagrantfile が置いてあるディレクトリへ移動し、下記を実行する。 # vagrant package 実行したディレクトリに cent7 のpackage.boxが作
概要 Rails で WEB 画面からのキックでジョブをバックグラウンドで実行するときどうするか。 例えば、メール送信・画像変換・CSVアップロードによる大量SQL実行など。 そんなときはバックグラウンドで非同期にジョブを実行してくれる便利な gem がある。 ruby-rails.hatenadiary.com このサイトで丁寧に説明してくれてます。 代表的だと言われている下記3つについて、それぞれ実装して使い心地を比較する。 Sidekiq: mperham/sidekiq · GitHub Resque: resque/resque · GitHub Delayed Job: collectiveidea/delayed_job · GitHub それと上記サイトで書かれている Active Job これの使い勝手も試してみる。 それぞれの gem について、もっと詳しく知りたい方は
概要 外部サイトをテストしたい!なんてことはほとんどないが、 スクレイピングだったりで外部サイトに依存する場合に検知できる方法ないかと思い、 Rspec + Capybara + Poltergeist で外部サイトをテストしてみた。 準備 ruby-2.1.3 bundler をインストールしておくこと phantomjs をインストールしておくこと(Mac なら brew install phantomjs) 必要 gem のインストール # cd [WORK_DIR] # vim Gemfile source "http://rubygems.org" group :test do gem 'capybara' gem 'capybara-webkit' gem 'rspec' gem 'poltergeist' end $ bundle install --path vendor/
概要 Rails や Padrino の案件に関わってきたが、全て Apache + Passenger の構成で動作させていた。 最近では、Nginx + Unicorn で動作させているという話しをよく聞くので、環境作りを試してみる。 前提 Rails4.2 をインストール済み bundler を使っている Unicorn のインストール Gemfile に下記を追加。 # vim Gemfile gem 'unicorn' 下記を実行し、インストール。 # bundle install Nginx のインストール 下記は mac で HomeBrew 使った場合。 環境によって yum なり aptitude なり使い分ける。 # brew install nginx Unicorn の設定 config/unicorn.rb を新規作成 Unicorn の設定ファイルを必要最低限の
概要 とあるプロジェクトで Rails 3.2 + MySQL 5.5 を利用してる。 管理画面の機能追加と改修をしているのだが、 ある機能の一覧ページが重くて開かないと報告を受けた! 1台しかない MySQL サーバが落ちて、 サービスに支障が出たことが何度かあるらしい。 問題のページについて 問題のページはよくある、管理画面の一覧画面。 Ajax により、JSON で一覧情報を受け取って表にするページなのだが、 集計値も表に含まれており、この集計値の算出が遅い原因になっていた。 調査・再現 本番同等のDBを準備してもらい、問題の画面を開く。 数分待っても、JSON が返却される様子がなく、そのままタイムアウト。 MySQL のクライアントからshow processlist;で実行中の SQL を軽く覗いてみると、 集計値を出すための SQL が 15 〜 30 秒くらいかかっている。
概要 Rails4.2 の環境へ ActiveAdmin を導入してみる。 有名な gem だと思われるが、業務で扱ったことがなかった。 業務で利用することになったので、導入方法や簡単な設定までをまとめておく。 前提 下記で Rails の環境が構築済みとする。 Ruby2.2.2 rvm 1.26.11 bundler 1.10.5 Rails 4.2.3 Gemfile の準備とインストール Rails のカレントディレクトリへ移動。 # vim Gemfile gem 'activeadmin', '~> 1.0.0.pre1' gem 'activeadmin-translate' gem 'devise' gem 'devise-i18n' インストールする。 bundle install --path vendor/bundle ActiveAdmin のインストール bund
Capistrano3 + Unicorn + Nginx でのデプロイ環境構築を試してみる。 今回は Ubuntu 12 の環境で行う。 リモートのGITサーバの準備や外部にWEBサーバ等を準備するのが面倒なので、 全てローカルで完結するように試してみる。 準備 # rvm list known Ubuntu 12 のせいで rvm で Ruby 1.9.3 までしかインストールできないので思考錯誤。 rvmsudo(MultiUserモード)を使えるように設定 # sudo usermod -G rvm vagrant # vim ~/.bashrc umask 002 #読み込まれる位置に追加 # export rvmsudo_secure_path=1 rvm のバージョンを上げる # rvmsudo rvm get head # rvmsudo rvm reload # rvm
Rails4.1.8 での自分用メモとして記事にしておく。 業務でモデルの階層が深いけど、1画面でフォームを作らなければならなかったので、簡略化した形で記事にまとめる。 記事は2つに分かれていて、 最初に書いたこの記事は Rails 側で行うべき基本的なことをまとめている。 2つ目の記事では、Javascirpt/Coffeescript と連携して動的に追加する部分を記事にまとめている。 jetglass.hatenablog.jp 概要 今回、業務で実際にあったモデルの階層は下記のような感じ。 イベント 1:N イベント詳細 1:N 中間テーブル N:N トピック 要件としてはざっくり下記とします。 1画面で関連する全モデル要素の編集フォームが表示されること 新規作成・編集・削除ができること 1:N の Nは動的にフォームで追加できること 実装 Javascript で動的にフォームを
今回はフォームに「追加・削除」ボタンを設置し、それらをJavascript/CoffeeScriptと連携して動的にする実装をする。 前回の静的な実装までは↓から。 jetglass.hatenablog.jp タスク 追加に関すること ネストされた要素内に追加ボタンを表示 追加ボタンを押下したら画面上に空のフォームが追加される 追加されたフォームに値を入れて新規作成および更新でレコードが追加される 削除に関すること ネストされた要素内に削除ボタンを表示 削除ボタンを押下したら対象のフォームが画面上から削除される 更新では削除対象のレコードが削除される 新規作成では削除したフォームのレコードが登録されない 実装 モデル フォームから送信されるパラメーター hoge_attributes内の削除対象としたい要素に、 _destroy=trueというを値を含めて処理させると、対象の要素が削除さ
このページを最初にブックマークしてみませんか?
『jetglass.hatenablog.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く