ChefとCapistranoの境界線 (Chef Casual Talks Vol.1) #eytokyo #opschef_jaMasahiro NAKAYAMA
![Capistrano 実践Tips集](https://cdn-ak-scissors.b.st-hatena.com/image/square/6678749e03832a18419c452172be56b220d1227c/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fcapistranotipstips-090907010548-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
ChefとCapistranoの境界線 (Chef Casual Talks Vol.1) #eytokyo #opschef_jaMasahiro NAKAYAMA
Capistranoを使って、Ruby初心者でもRuby以外のソースコードをデプロイできるようになるまでの流れです。 Rubyもよくわからないし、デプロイツールもろくに使ったことないけど、 Capistranoを使ってコードをデプロイしたい。という人に特に向けた記事です。 私自身そういう人でした。 私の理解不足の部分が多々ありますが、とにかくCapistranoを使ってデプロイができることを目的とします。私は今回の方法で、PHPのコードをデプロイしています。 「もう手動デプロイは嫌だ」「デプロイツール使いたい」「なんかデプロイツール使わないとヤバそう」と思っている方々にとってちょうどいい記事になればいいなと。 Capistranoデプロイができるまで(目次) Capistranoってどういうもの デプロイの流れの概要 デプロイ先サーバーとの接続条件 Ruby、RubyGemsのインストール
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
書き方 例として、micropostsテーブルにuser_idカラムを外部キーとして設定したいと思います。 (この例では、他にcontentカラムもテーブルに設定しています。) 普通に user_id カラムを作成 class CreateMicroposts < ActiveRecord::Migration def change create_table :microposts do |t| t.string :content t.integer :user_id t.timestamps end add_index :microposts, [:user_id, :created_at] end end references を使う references はuser_idカラムを作成します。 class CreateMicroposts < ActiveRecord::Migrati
Rails で STI(Single Table Inheritance)を使った時の、コントローラの実装をどうするか?という事について書いてみたいと思います。 STI(単一テーブル継承)とは オブジェクト指向の基本概念として、あるクラスを元にサブクラスを定義する継承があります。 この継承は、プログラミング言語ですとと予め機能が提供されていることが多いですが、 RDB ですとテーブル構成によって表現する場合があります。 *1 今回使う STI は、一つのテーブル内に継承関係にあるクラスのカラムを全て持ってしまう方法です。 例として Player クラスを継承した Footballer クラスと Cricketer クラスがあるとします。 親クラスに共通のプロパティ、子クラスがそれぞれのプロパティを持っていますが、これを STI で表現すると以下になります。 テーブルのレコードがどちらの型に
はじめに 他の人が書いたコードを読んでいるときに時々気になるのが、英語の間違いです。 特に動詞、名詞、形容詞の使い分けが間違っていたりすると、かなり違和感を感じます。 そこで今回はモデル(=クラス)やメソッドに名前を付けるときの基本的な原則をまとめてみます。 また、英文法的に正しい品詞が選べるようになるための習慣についても最後に説明します。 想定する言語/フレームワーク この記事の説明ではRuby/Ruby on Railsを想定しています。 ただし、基本的な考え方は他の言語でも同じように使えるはずです。 モデルの名前は名詞にする 例: 「支払い情報」を表すモデルを作りたい場合 × Pay ○ Payment 「支払う = payか。よし。」でモデルを作ってはいけません! payは動詞で、payの名詞形がpaymentです。 Payモデルではなく、Paymentモデルを作りましょう。 例:
Railsでmigrationを作成する時、changeメソッドだけが定義されていたり、upとdownメソッドの2つが定義されている時があります。 class AddColumnHoge < ActiveRecord::Migration def change end end class ChangeColumnHoge < ActiveRecord::Migration def up end def down end end こんな風に、migrationファイルを作成した時の名前で、生成されるclassのひな形が違います。 up/downについて upとdownメソッドは、migrateを実行した時の処理と、rollbackした時の処理を定義します。 upで変更したものは、downで元に戻るようにしておかないと、正しくrollbackできません。 class ChangeColumnH
8月 4th, 2012 • rails Railsのユニーク制約はよく、バリデーションでおこなわれる。 具体的には、Userモデルに、:uniqueness => trueというバリデーションを加える。 class User < ActiveRecord validates :name, :uniqueness => true end しかし、実際はこれだけでは十分ではないらしく、データベース側でもユニーク制約をしたほうがいいらしい。 参考:validates :uniquenessはuniquenessを保証しないのでDBにindexをつけましょう! Rails側とデータベース側のどちらにも、ユニーク制約をするほうがエラーの危険性もなくなるから、 やっておいたほうが無難である。 では、データベース側でのユニーク制約のやりかた。 マイグレーションに、次を加える。 add_index
行ロックとは 行ロックとは、テーブルの同一レコードに対して、複数同時に更新できないように制限する仕組みのことです。 Ruby on RailsのActiveRecordには2種類のロック方法があります。 楽観的ロック(Rails依存) 悲観的ロック(DBMS依存) それぞれの違いや使い方について解説していきたいと思います。 楽観的ロック 楽観的ロックとは、DBMSの機能に頼らずロックバージョンをレコードに保存しておくことで、取得時と変更時にロックバージョンに変更がないか確認し、変更があった場合は例外を発生させる方法です。 ロックするタイミング データ更新時 データを複数同時に取得することができるが、途中で更新されていた場合は、更新できない 仕組み テーブルにlock_versionフィールドを追加する lock_versionが書き換わっていたらActiveRecord::StaleObj
2013年03月22日16:17 Ruby Railsで大量のデータをまとめて更新するならfind_each使うよね ということでメモ程度ですが書いときます。 Railsには find_each というメソッドが用意されています。通常の each メソッドを使用すると、全データをまとめてメモリに展開してから処理を開始します。そのため、十分にメモリに載るデータ量であれば何も問題ないですが、数百万、数千万というデータ量になってくるとメモリに載りきらずに溢れてしまって大変なことになります。 find: 全データをメモリに展開してから処理 find_each: 少しずつデータをメモリに展開しつつ処理 そういうときには find_each メソッドを使いましょう。これは少しずつデータをメモリに展開して処理を行います(デフォルトでは1,000件ずつ)。全部まとめてではなくちょっとずつメモリに展開してく
Railsでのモジュールの使い方のメモです。 Railsプロジェクト内の/config/application.rbファイル内にモジュール設置パス以下のファイルを自動でロードする指定をし、クラス内で "include モジュール名" と指定することで該当モジュールを読み込めるようになります。 モジュールはRailsプロジェクト内の/lib以下に設置します。 コントローラ、ヘルパー、モデルで共通で使われる機能はモジュールにまとめて必要に応じて呼び出します。 動作確認環境 Rails (Ver 4.0.0) Rails 4.0: Final version released! Rails (Ver 3.2.13) ※2013/9/15 追記 コメント欄で御指摘いただきました。 Rails 4.0.0でもこのやり方で動きましたが、Rails4からapp/controllers/concerns,
2020-06-02 Comments/Subversion/TortoiseSVNメモ/コミットしたログメッセージが編集できない 2020-03-31 ゲームを作る上でのバッドノウハウ/十字キーがボタンとして認識される 2019-11-12 Comments/Wiki/PukiWiki/スパム(spam)を防止する方法 2019-11-01 Delphi/XML/Delphi付属のXMLライブラリ 2019-08-27 Comments/SaGa2 秘宝伝説/モンスター一人クリア 2019-07-11 Comments/git/git rebaseを元に戻す方法 2019-06-08 VBA/関数呼び出し時に「オブジェクトが必要です。」というエラーが出る 2019-03-07 Comments/PhotoShop/「下のレイヤーとグループ化」はどこいったの? 2019-02-06 Rub
Cassandraは0.8系を待つことにした。ネタがなくなったので、MySQLのパーティショニングプラグインをつくってみる 環境 Windows 7 HomePremium 64bit ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32] mysql Ver 14.14 Distrib 5.1.53, for Win32 rails 2.3.11 基盤作成 適当にRailsアプリを作成したあとに以下を実行 命名規則なんて知りません。。。 ruby script/generate plugin acts_as_mysql_helper init.rbの記述 location : vendor/plugins/acts_as_mysql_helper/init.rb require 'acts_as_mysql_helper' #=> li
1.0.0 1.1.0 1.1.1 1.1.6 1.2.0 1.2.6 2.0.0 2.0.1 2.0.3 2.1.0 2.2.1 2.3.2 2.3.8 3.0.0 3.0.5 3.0.7 3.0.9 3.1.0 3.2.3 3.2.8 3.2.13 4.0.0 4.1.0 4.2.1 説明 分割してレコードを取得して処理をする。 デフォルトで1000件ずつ処理をする。 使い方 モデル.find_each([オプション]) do |i| end オプション オプション説明
こんにちは、鈴木です。 Rails の便利なライブラリをシリーズでご紹介してみたいと思います。 今回は「N+1 問題」を検出してくれるライブラリ、bullet です。 bullet (http://github.com/flyerhzm/bullet) N+1 問題 N+1 問題とは、OR マッパーを使用しているときに発生しがちな問題です。 何かの一覧画面を作成しているときに、 一覧に表示するデータを取得するために SELECT を 1 回実行(N レコード返される) 各データの関連データを取得するために SELECT を N 回実行 データベースアクセス(SELECT)が合計 N+1 回も実行される(JOIN して 1 回の SQL で取得した方が効率的) というものです。 具体的なコードで考えてみましょう。 例として店舗の一覧画面を作成しているとします。 関係するモデルは以下の通りです
作りました IT勉強会ですよ Beta ・・・というのを作りました。 12月21日開発着手、12月31日公開、現在随時機能調整中。 スクショ。 機能 地域・内容・開催形式・期間の複数条件でIT関連イベントを絞り込めるものです。 他のサイトとの差別化 通信がある程度軽快(ただしブラウザにはけっこう負担かける設計になってます) 複数条件でイベントを絞り込める データ登録が自動 経緯 この冬期休暇を機にハッカソン参加しまくりたいと考える ↓ ハッカソン探す ↓ うまく見つからない ↓ イベント探し用のサービスを自分で作ることにする ↓ 12月21日(土)に開かれたハッカソンを機に開発に着手する。 ハッカソンレポート:夜通しハッカソン - clock-up-blog ↓ 12月28日(土)に開かれたトークソンにて状況報告。公開予定日を年内と宣言し自分を追い込む。 新サービス(勉強会まとめ)を作り始
基本設定、開発環境設定に引き続き、今回はCapistranoを導入して自動デプロイできるように設定。unicorn+nginx周りの設定も変更して快適にデプロイできるようになりました。 リモートリポジトリの作成 リモートサーバーにリポジトリを作成します。 今回は全て同じサーバーでやるので、自分のホームディレクトリ直下に作りました。 $ mkdir -p /home/ntaku/git/sample $ cd ~/git/sample $ git --bare init 後からcapistranoでアプリを配置するためのディレクトリも作成しておきます。 # mkdir /var/www プロジェクト作成 ここからはローカルで。 新規プロジェクトを作成して、テスト用のコントローラーを追加します。 $ rails new sample -d mysql $ cd sample $ rails g
Capistrano、便利ですよね。 capistrano/capistrano 最近メジャーバージョンアップがあったのですが、使い方、というかスクリプトの書き方やお作法が変わり、「Capistrano 3にアップデートしたはいいけど全然動かなくてどうなってんだ」という流れはもはやお約束みたいです。 試しに僕も個人で作ってるウェブサイトのCapistranoをアップデートしてみたので、その上でこんなところに気を付けたいな、と思うポイントでも書いておきます。 capifyは使わない Capistranoを使うときは$ bundle installをし、次に$ bundle exec capify .とするのがお約束の流れですが、これからはcapifyを使ってもcap installを使ってねと言われます。 ですので: $ bundle exec cap installとしましょう。 マルチス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く