タグ

ブックマーク / y-yagi.tumblr.com (15)

  • Rails 5.2.0について発表してきた

    資料。 Rails 5.2(Part1) Rails 5.2(Part2) 5.1についてやった時に一回で詰め込みすぎたな、と反省したので、今回は二回に分けてやった(一回目がmajor featureで、二回目が各コンポーネント)。割と良かったんじゃないかと個人的には思っているので、多分次もそうすると思う。 なお、面倒なので資料は更新してないのですが、Content Security Policyについてはその後また手が少し入りまして、 デフォルトでは無効化されたり Disable CSP by defaultRails UJS用にnonceの自動生成処理が入ったりしました Add support for automatic nonce generation for Rails UJSという感じになりました。 また今後変わる可能性もありますが、現状はそんな感じで。最終的には5-2-stab

    Rails 5.2.0について発表してきた
  • [Rails] `belongs_to_required_by_default`を設定しているのに効かない場合の対応 | 日々雑記

    Rails 5.0.0からbelongs_to_required_by_defaultというconfigが追加されました。 これはbelongs_to associationsのrequireをdefaultでtrueにするかどうかを指定するためのconfigで、Rails 5.0.0以降で新規にRailsアプリを生成するとデフォルトでtrueが設定されます。 値の設定はconfig/initializers/new_framework_defaults.rbで行われています。 # config/initializers/new_framework_defaults.rb # Require `belongs_to` associations by default. Previous versions had false. Rails.application.config.active_r

    [Rails] `belongs_to_required_by_default`を設定しているのに効かない場合の対応 | 日々雑記
  • Bootsnapについて

    Bootsnapに調べたのでメモ。なお、確認した際のバージョンは1.0.0です。 Shopifyが出しているBootsnapというgemがあります。説明に書いてある通り、巨大なRuby / Railsのアプリを高速化する為のgemらしいです。 何をやってくれるかというと、Ruby, Active Support、YAMLのメソッドの呼び出しの最適化、及び、キャッシュをしてくれる、というものらしいです。 なお、1.0.0の時点でサポートしているプラットフォームはMacOSLinuxだけです。Windowsは未対応。 また、Rubyは2.3.0以上のみサポートしています。 使い方Gemfileにgem 'bootsnap'を追加し、下記設定をrequire 'bundler/setup'の後に定義すればOKです。 require 'bootsnap' Bootsnap.setup( cach

    Bootsnapについて
  • Rails 5に入ったDB破壊系taskの防止処理について

    小ネタ。 Rails 5から、production environmentでのDB破壊系のtaskの実行を防止する仕組みが入りました。 例えば、production environmentでdb:dropを実行しようとすると、下記のようなエラー(ActiveRecord::ProtectedEnvironmentError)が発生します。 $ RAILS_ENV=production ./bin/rails db:drop rails aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database If you are sure you want to continue, run the sa

    Rails 5に入ったDB破壊系taskの防止処理について
  • RailsのAction Mailer Previewsについて

    色々と試してみたのでメモ。なお、下記はrails 4.1.1で検証しています。幾つかのパターンでエラーになる事がありますが、最新のバージョンでは直ってる可能性もあります。 Action Mailer PreviewsとはRails4.1から入った機能で、名前のとおりemailのpreviewが出来る機能。 同じ機能を持つものとして、mail_viewというgemがあり、Mailer Previewsはこのgemを参考に作られている。 使い方早速試してみる。まずは、generatorでmailerを作成。 rails g mailer UserMailer mail1 create app/mailers/user_mailer.rb invoke erb create app/views/user_mailer create app/views/user_mailer/mail1.text

    RailsのAction Mailer Previewsについて
  • activerecord-importのimportを速くする

    Railsで大量データのインポート処理が必要な場合、activerecord-importを使う事が多いかと思います。このgemは複数のINSERTを1つのSQLにまとめてくれる(multi-row-insertを行う)ので、1データ毎に1つのINSERTを行うより高速に動作します。 activerecord-importのimportメソッドはデフォルトのままでも十分に早いのですが、それでも速度的に厳しい、という場合もあるかと思います。activerecord-importのimportメソッドは引数により速度が変化しますので、そのような場合引数の見直しを行ってみても良いかもしれません。 ではどのようにすればimportが高速に動作するのでしょうか? importにmodelではなくcolumn, valueを指定するimportの引数にはmodel objectの配列、または colu

    activerecord-importのimportを速くする
    suginoy
    suginoy 2016/08/01
    "importにmodelではなくcolumn, valueを指定する"
  • Rails 5のActive Record attributes APIについて

    Rails 5から、attributes APIという機能がActive Recordに追加されました。attributes APIは、既に存在するattributeのtypeを上書きしたり、任意のattributeを定義出来る機能です。 言葉で説明してもイマイチわかりずらいので、早速例を見てみましょう。 create_table "books", force: :cascade do |t| t.string "name" t.integer "price" t.date "published_on" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "out_of_print", default: "false" end class Book < ApplicationR

    Rails 5のActive Record attributes APIについて
  • Rails 5から導入されたmigration versioingについて

    Rails 5から、migration versioingという機能が追加されました。 これは、generatorが生成するマイグレーションファイルに、Railsのどのバージョンで生成されたマイグレーションファイルなのかという情報を付与し、そのバージョン情報によりAPIの挙動を変える、というものです。 実際にRails 5.0.beta1でマイグレーションファイルを生成してみると、以下のような内容のファイルが生成されます。 $ ./bin/rails g model book name:string # db/migrate/20160124064808_create_books.rb class CreateBooks < ActiveRecord::Migration[5.0] def change create_table :books do |t| t.string :name t

    Rails 5から導入されたmigration versioingについて
    suginoy
    suginoy 2016/01/27
    db:migrate:reset で git diff してギャッてなるやつの対応
  • rails routing constraintsについて

    少し調べたのでメモ。 constraintsとはrailsのroutingには"constraints"という機能があり、routingに様々な制限を設定する事が出来る。 設定出来るconstraintsについては以下。 HTTP Verb ConstraintsHTTPメソッドでの制限。 match 'users', to: 'users#index', via: [:get, :post] 上記の場合、GET、POSTメソッド以外でusersアクセスしようとするとActionController::RoutingErrorがraiseされる。rails3系から4系に移行する際によく見た書き方ですな。 Segment Constraintsdynamic segmentのフォーマットについて制限を設定する事が出来る。 get 'users/:id', to: 'users#show',

    rails routing constraintsについて
    suginoy
    suginoy 2015/10/05
    "matches?メソッドが定義されていればOK"
  • Turbolinksのpartial replacementsについて

    Turbolinks 3.0からpartial replacementsをサポートした事なので試してみた。 以下readmeを見ながらつらつらと。 名前の通りで、body全体の変更ではなく、body内の特定の部分のみの変更が出来る機能。 元々、turbograftというgemがあって、そのgemで提供していた機能を参考にして、体に機能を導入したらしいです。 使い方Turbolinks.visit(path, options) 又はTurbolinks.replace(html, options) を使用した場合に、自動的にpartial replacementsが行われます。なお、最新のコンテンツをサーバから取得し直したい場合はTurbolinks.visit を、既にコンテンツを取得済みで、手動で現在のページのhtmlの置き換えをしたい場合はTurbolinks.replace を使う

    Turbolinksのpartial replacementsについて
  • Railsのweb-consoleについて

    Rails 4.2から導入されたweb-consoleについて試してみたのでメモ。なお、試したバージョンは'2.0.0.beta3'。Rails 4.2.beta1だと、2.0.0.beta2がGemfileに記載されているが、2.0.0.beta2はルーティングエラー時にエラーになるバグがあるのでbeta3で。 ### web-consoleとは Rails 4.2のMajor Featuresの一つ。 デフォルトエラーページ用のデバッギングツールで、ブラウザ上からインタラクティブにconsoleの操作が出来る。 [github上の画像引用](https://github.com/rails/web-console)。 エラーが起きた箇所で操作が出来るだけではなく、traceを選択する事で、選択した箇所での値の確認も出来る。[Better Errors](https://github.c

    Railsのweb-consoleについて
  • RailsのAction Mailer Previewsについて

    色々と試してみたのでメモ。なお、下記はrails 4.1.1で検証しています。幾つかのパターンでエラーになる事がありますが、最新のバージョンでは直ってる可能性もあります。 Action Mailer PreviewsとはRails4.1から入った機能で、名前のとおりemailのpreviewが出来る機能。 同じ機能を持つものとして、mail_viewというgemがあり、Mailer Previewsはこのgemを参考に作られている。 使い方早速試してみる。まずは、generatorでmailerを作成。 rails g mailer UserMailer mail1 create app/mailers/user_mailer.rb invoke erb create app/views/user_mailer create app/views/user_mailer/mail1.text

    RailsのAction Mailer Previewsについて
  • Ruby on Rails 4.1 Release Notesを読んだ

    Ruby on Rails 4.1 Release Notesを読んだのでメモ。 類似多数のよう気がするが、自分のメモ用なので特に気にしない。Major Featuresを上から順に。 SpringRails application preloaderのSpringが標準搭載になった。 これにより、bin/railsおよびbin/rakeが自動的にspring環境で実行されることになる。きっと早くなる。 sporkは標準にならなかったのに、spingは含まれたなあ。どっちにしろspringは使っているでのありがたいです。zeusじゃなくて良かった。 config/secrets.ymlapplication’s secretsを管理する為のファイルとして、config/secrets.ymlが出来た。 中身はこんな感じ。 development: secret_key_base: xxxx

    Ruby on Rails 4.1 Release Notesを読んだ
  • Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? を開催した

    Ginza.rb.第8回を開催しました。今回は参加者の方に事前にGemfileをアップして頂き、使用しているgemについて説明をして頂く形式で実施。 Gemfileの置き場は[こちら](https://github.com/ginzarb/meetups/issues/6)。 話に上がったgemについて以下にずらずらと。 ### [gon](https://github.com/gazay/gon) Rails側の変数をJavaScriptに渡す事が出来るgem。 controllerから大量のデータをJavaScriptに渡す必要がある場合に便利。 詳細は[RailsCast](http://railscasts.com/episodes/324-passing-data-to-javascript?language=ja&view=asciicast)参照。 ### [Better E

    Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? を開催した
  • turbolinksについて

    rails4で追加されたturbokinksについて、自分用メモ。なお、下記は2013/07/28時点での話。 turbolinksとは簡単に言うと、ページ読み込みを高速化するための機能。 ページ全体を読み直すのではなく、body/title等一部分のみを書き換える。 asset(JS/CSS)はそのまま利用されるので、その分高速。 処理概要ざっくり書くと、以下のような流れ。 クリックイベントをハンドリング現在のページをキャッシュXMLHttpRequestでリンク先のデータ取得URLを書き換えtitle/body/csrf token(あれば)を書き換えURLの書き換え等は、History APIを利用して実施。その為、History APIを使えないブラウザでは当然動作しない。IE 9以下とか。 問題点turbolinksでページをロードすると、jQueryのreadyイベントとDOM

    turbolinksについて
  • 1