PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
概要 Puma は Ruby/Rack アプリケーションのための HTTP サーバです。Rails の場合に関する使用方法をまとめます。 事前準備 JRuby のインストール こちらのページを参考にして rbenv による ruby インストールを行います。公式ページによると、パフォーマンスを最大限に引き出すためには正式にスレッドをサポートしている Rubinius または JRuby を使用することを推奨しています。 In order to get the best throughput, it is highly recommended that you use a Ruby implementation with real threads like Rubinius or JRuby. 必須ではありませんが、本ページでは JRuby をインストールして利用してみます。ビルドに必要な
背景 これまで開発していたRailsアプリケーションはアプリケーションサーバにUnicornを採用して本番稼働させていた。最近になってようやくRails5に移行しようかとなったので、ずっと気になっていたPumaを試験的に採用してみることにした。 開発したアプリーションをPumaで起動する際には、どうやら「pumaコマンド」で起動する方法と「pumactlコマンド」で起動する方法があるらしい、ということがわかったがいまいちその違いがわからなかったので調べてみた。 Pumaとは Pumaではリクエストの並列処理を実現させるためにスレッドを利用している。リクエストを処理するためのスレッドをスレッドプールに事前に用意しておいて、リクエストがきたときにスレッドに処理を任せることでスレッドベースな処理を実現させているらしい。 GitHub - puma/puma: A ruby web server
更新情報 更新(2019/09/13): Rails 6.0時点のドキュメント更新を反映。 更新(2020/03/09): Rails 6で削除された項目を反映。 更新(2021/01/22): Rails 6.1の変更を反映(edge APIドキュメントに基づいています)。6.1 edgeドキュメントで追加または変更されたパラグラフ冒頭には「(6.1 edge)」を追加しています。 更新(2022/01/06): Rails 7の更新を反映し、(6.1 edge)を削除。 更新(2023/10/24): Rails 7.1の更新を反映。 こんにちは、hachi8833です。Rails 6.1の#form_withのAPIドキュメント変更を反映しました。form_withはRailsのビューでフォームを送信するためのヘルパーメソッドです。 5.1より前のform_forやform_tagは
やりたい事 管理画面用に scaffold で作成した CRUD ( Create, Read, Update, Delete ) へ namespace を適用し、/admin/ のような URL でアクセスしたい。 controller , view , helper や、assets 配下の javascripts , stylesheet , image を namespace でディレクトリ分けし、見通しを良くしたい。 ( app/controllers/admin/***_controller.rb , app/assets/javascripts/admin/***.js ... ) namespace を利用し、コントローラとビューはわけても、モデルはわけたくない。 前提 バージョン
熱いワールドカップが終わって平和な夜に戻ったshibuso です。Rails ユーザの皆さんは色々rails genarate コマンドを利用しているかと思いますが、この前調べていたら「こんなにあったのか!」となったので、今回Rails のgenerator を大まかに紹介してみます。Rails のバージョンは4.0.1 です。 実行結果をまとめてみました 結構数があるので先に目次を作っておきます。順番は重要そうなものだったり気の向くままだったりしていますので、大して意味はありません。 scaffold scaffold_controller controller resource model migration assets helper generator integration_test jbuilder mailer task rails generate scaffold これは
管理画面などを自分で作る場合、admin/blogs_controller.rbのようなネームスペースのついたコントローラーと、blog のようなネームスペースなしのモデルにアクセスするscaffoldを作りたくなります ありがちな手順は、 rails generate scaffold blog のようにネームスペースなしでscaffoldを生成したあとで、controllerやviewのファイルを移動して、さらにそれらのファイルがネームスペースなしのモデルを参照するように直していく、というものです ですが、rails4に搭載されているscaffold_controller generatorを使うと、そんな面倒なことをしなくても最初から適切なscaffoldを生成させることができます scaffold_controller $ rails generate scaffold_contr
namespace :admin do resources :users end # rake routes Prefix Verb URI Pattern Controller#Action admin_users GET /admin/users(.:format) admin/users#index POST /admin/users(.:format) admin/users#create new_admin_user GET /admin/users/new(.:format) admin/users#new dit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit admin_user GET /admin/users/:id(.:format) admin/users#show PATCH /adm
rails g model <model name> <column name>:<type> <column name>:<type> ... 例) $ rails g model CancelReason user_id:integer reason_id:integer memo:text invoke active_record create db/migrate/20150908052600_create_cancel_reasons.rb create app/models/cancel_reason.rb invoke rspec create spec/models/cancel_reason_spec.rb
:network_authentication_requiredちなみにこれのRuby元コードはどこにあるかというとrack/rackの/lib/rack/utils.rbにあります。 HTTP_STATUS_CODES = { 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226
Railsではバリデーション(Validation)という仕組みがあります。 フォームなどでユーザーからの入力値をDBに保存する前にその値が正しいものかモデル層で(システムとして許可している値か)を検証する仕組みです。 バリデーションの基本的な流れ、バリデーションの定義とバリデーションのテスト方法、バリデーションのスキップなどのバリデーションの基本についてまとめました。 動作確認 Rails 4.1 ActiveRecord 4.1 shoulda-matchers 2.6.3 目次 1. Railsでのバリデーションの流れ 2. バリデーションを定義する 2.1. 存在チェック(presence) 2.2. 一意性(ユニーク制約)のチェック(uniqueness) 2.3. 長さのチェック(length) 2.4. フォーマットのチェック(format) 2.5. 数値の値チェック(nu
オブジェクトがDBに保存される前に、そのデータが正しいかどうかを検証する仕組みをバリデーションといいますが、 RailsでActiveRecordを使ってそれを実現するにあたってよく使いそうなのをまとめます。 以下のメソッドにおいてはバリデーションがトリガされます。 create create! save save! update update! 以下のメソッドにおいてはバリデーションはスキップされます。 decrement! decrement_counter increment! increment_counter toggle! touch update_all update_attribute update_column update_columns update_counters Railsでのバリデーショントリガ Railsではvalid?メソッドを実行するとバリデーションが実
irb> Person.create(name: "John Doe").valid? => true irb> Person.create(name: nil).valid? => false 上でわかるように、このバリデーションはPersonにname属性がない場合に無効であることを知らせます。2つ目のPersonはデータベースに保存されません。 バリデーションの詳細を説明する前に、アプリケーション全体においてバリデーションがいかに重要であるかについて説明します。 1.1 バリデーションを行なう理由 バリデーションは、正しいデータだけをデータベースに保存するために行われます。たとえば、自分のアプリケーションで、すべてのユーザーには必ず電子メールアドレスと住所が必要だとします。正しいデータだけをデータベースに保存するのであれば、モデルレベルでバリデーションを実行するのが最適です。モデルレ
はじめに Railsアプリケーションを本格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて
PaperClip を試した時と同等のサンプルを CarrierWave で作ってみた。 公式 carrierwaveuploader/carrierwave https://github.com/carrierwaveuploader/carrierwave Home · carrierwaveuploader/carrierwave Wiki https://github.com/carrierwaveuploader/carrierwave/wiki 試した環境 % cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS" % ./bin/rake about About your appli
Pryとは Rubyには、標準で付属されているirb(Interactive Ruby)というツールがあります。 consoleで、irbと入力するとirbが実行されます。 そこで、対話的にRubyの式を入力・実行することができます。 $ irb irb(main):001:0> 1 + 2 => 3 そして、Pryはirbの代替となるパワフルな対話ツールです。 なにがパワフルかというと次のようなことができます。 ドキュメントが見れる シンタックスハイライト デバッグができる(binding.pryをソース二記載するとブレイクポイントになる) $ pry [1] pry(main)> ls # 現在のスコープの変数とメソッドを表示 self.methods: inspect to_s locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_ 動作確認
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く