Rails Sprocketsとのお別れの仕方 - 最初の一歩 - - SmartHR Tech Blog
こんにちは Rails5.1に向けて、DHHのjqueryを依存から外す発言を発端にフロントエンド周りが急激に発展しているので、簡単にですがまとめてみました。 各issue, PRの詳細には踏み込みませんが、知見に溢れているので読んでみるの推奨です。 間違い、足りないものがあったら編集リクエストお願いします。 jQuery依存を無くす話が出る rails(issue): Drop jQuery as a dependency jquery-ujsはjqueryに依存しないようにする jquery-ujs: Drop jQuery as a dependency "jquery"-ujsじゃなくなったので名前変更 rails-ujs誕生 実際にRailsからjquery依存がなくなる rails: Drop jQuery as a dependency jsライブラリを入れる方法がnpmパッ
3年間日本語のみで運用してきたサービスを、3ヶ月で新人が多言語化した話 はじめにはじめまして。FiNCで今年の4月からサーバーサイドエンジニアをやっている澤井です。 先日プレスリリースがありましたとおり、FiNCで提供している法人向けサービスFiNCプラスが日本語以外にも対応し、この度英語版がリリースされました。 入社直後に携わった最初のプロジェクトということで、個人的には非常に感慨深いのですが、今回はこのプロジェクトの舞台裏を見ていきたいと思います。 多言語化とはサービスの多言語対応と言っても、そのスコープは様々ですし、サービスが提供しているデータは多岐にわたります。 ざっくりカテゴライズするだけでも、 UIタイムラインなどユーザー投稿によるデータおすすめのタスクなどのマスターデータがあり、それぞれテキストのものと画像データがあります。 またこれらに紐付いて、 ユーザー使用言語の判定があ
PostgreSQLは標準機能では日本語のテキストを全文検索することはできません。PostgreSQLにPGroonga(ぴーじーるんが)という拡張機能を導入することで日本語のテキストを全文検索できるようになります。しかもPGroongaは高速です。Wikipedia日本語版のテキスト(約185万件・平均約4KB)から約2万件ヒットするような全文検索をしても0.2秒かかりません。 PostgreSQLと全文検索エンジンサーバーを組み合わせて日本語全文検索を実現することもできますが、管理するサーバーが増える・SQL以外に全文検索エンジンサーバーのことを覚える必要があるなど開発・運用時のコストが高くなります。PostgreSQLだけで完結できた方が開発時も運用時も楽になります。 この記事ではRuby on Railsで作ったアプリケーションからPGroongaを使って日本語全文検索機能を実現す
結論 Sprocketsの動作を維持しつつ、npmやgulpなどのモダンなパワーも取り入れた、いいとこどりな環境を構築してみた。 やりたいこと SEOのため、Reactでserver-side renderingをしたい JSコードをES6で記述したい 既存のCoffeeScriptのコードも共存させたい(後ほど書き換える予定) npmやgulpといったモダンな環境でアセット管理をしたい browserifyを使いたい Sprocketsが実現している機能は維持したい そもそもSprocketsは何をしているか 周知のことでしょうが念のためおさらい。 ファイル毎の依存関係の管理 application.jsなどのマニュフェストファイルがやってること altJSのコンパイル アセットのminify アセットの連結 アセットファイル名にMD5フィンガープリントを挿入 Sprocketsの問題点
はじめに railsのsprocketsがキツイ。特にjsファイルが多くなると開発がとっってもキツイ。 layoutに こうやってるだけでも出力されたhtmlにはscriptタグが30個ぐらいならんでて、ページの読み込みに10sec以上かかる。 だけど、単にapp/assets/javascriptsをgulp watchとかはしたくない。 なぜならビルドはブラウザのリロード時に変更がある場合だけして欲しかった。 あとwindow.AppNamespace以下にモジュール追加していくのも辛い。 モジュール同士の依存関係もよくわかんないし、何よりwindow.AppNamespace.Modules.UserList.ItemViewとか長すぎ! browserify-railsってやつ使ってみた browserifyがrailsの仕組みの中で動くようになる。 browserify-rail
Sendagaya.rb #114に来たので、目標のブログ記事を書いてた。 今日はsendagaya.rbへ行ってブログ記事を一本仕上げるのが目標。— Koshikawa Naoto (@ppworks) August 10, 2015 今日は、React.jsの会なので、RailsからReact.jsをざっくり使って見る準備をしてみます。 目指すもの sprocketsのままとりあえず進む jsのライブラリをnpmで管理したい React.jsをES6で書きたいし、JSX書きたい herokuで動かすぞ! react-railsは使いたくない 方針 sprocketsと共存するために、browserify-railsを利用し、ES6はBabelを利用します。ライブラリはそのまま、npmで管理します。 npmを入れます もし入っていなければnpmを入れましょうね。 brew install
Railsで大きなファイルを扱う際のポイントをまとめてみました。 前提 大きなファイルとは だいたい100MB~10GBくらいのファイルをダウンロード・アップロードするのを想定することにします。 数MB程度だと、特別な工夫なしでもそれほど問題になりません。10GBを超えてくると、気をつけるべき点が変わってくるかと思います。 以下では主にサンプルとして、1GBのファイル(ISOファイルやZIPファイルなど)を想定します。 環境 以下のような環境を想定します。 Railsは4系 Nginx + Unicornのスタンダードな構成 サーバ1台のシンプルな構成(ロードバランサを使用した複数台構成については、末尾に少し記載しています) ダウンロード ファイルのダウンロード まずは、Railsアプリから大きなファイルを配信するケースを考えましょう。 たとえば、ISOファイルをサーバ内に保存しておいて、
id:joker1007 さんに触発されました。 Ginza.rb 21回の発表資料。rails_adminのつらみとオススメgem達。 1年間で10個以上アプリやgemを作っている中でよく使うgemをまとめてみます Railsアプリ(rails new した直後に必ず入れる) annotate https://github.com/ctran/annotate_models modelのソースの先頭にテーブルのスキーマ情報を付加してくれるgem。いちいちschema.rbを見に行く必要がなくなるので超ベンリ こんな感じ # == Schema Information # # Table name: plugins # # id :integer not null, primary key # name :string # title :string # version :string #
こんにちは、クックパッド料理教室の京和です。 管理画面はほとんどのウェブサービスに存在し、ユーザサポートやサービスの状況・KPIなどを確認するために、スタッフが毎日利用するとても重要なものです。にも関わらず、新規サービスでは人員が不足していることから、ついおざなりなデザインや実装になりがちなのではないでしょうか。 今回はクックパッド料理教室で採用している、RailsのMountable EngineとBootstrapのデザインテンプレートを使った、見栄えがよくメンテナンスしやすい管理画面を短期間で実装する方法についてご紹介します。 Mountable Engineとは Mountable EngineはRailsアプリケーション上で動く、ミニRailsアプリケーションのようなものです。 ミニと書きましたが、Railsアプリケーション(Rails::Application)はRails::
当社はCookieを使用して、お客様が当社のWebサイトでより良い体験を得られるようにしています。引き続き閲覧する場合は、プライバシーポリシーに同意したことになります。
こんにちは。@srockstyleです。 Ruby On Rails便利ですね。フレームワークとして「Railsライクだから便利だよ!」ってはなすフレームワークがいっぱいでてきて久しいです。 今回はRailsで作ったアプリを高速化した話です。と言ってもこれは2015年くらいにやった作業なので、モダンな環境では通用しないかもしれません。 この記事の結論は結局「キャッシュいいね」となってしまいます。 最近のキャッシュトレンドな話はまた別に書きます。 ことのはじまり 当時の僕は一人でアプリケーションを書いてました。 作業もほぼ終盤に終わり、バグも潰し終えたとき、とある現象に気づきました。 ちなみにこれリモートのサーバです。DB接続のところはキャッシュつかうようにしたのである程度早かったり、Cloudのほうも設定したのでよかったんですが遅いですね。Viewが9ms、ARが17msなのに全体で157
元ネタはこちらになります。 いくつかは使ったことはあるのですが、使った事がないものもあったので自分で試しながらまとめてみました。 Awesome Print これはオブジェクトを見やすくしてくれるgemです。 まず、このgemを入れていない場合の出力をみてみましょう。 ちょっとわかりにくいですね。 それではgemをいれてみましょう。Gemfileに以下を追加します。 bundle installをして、rails consoleを立ち上げなおします。 だいぶ見やすくなった感じがします。 ただ、Rails4.2からは、PrettyPrintというのが標準ではいるようになっていて、標準でもだいぶみやすくなってますね。 Rails Panel このgemをいれると、ChromeのDeveloper ToolでRailsの情報を取得できるようになります。 まず、Railsアプリケーションにmeta
よくあるお問い合わせフォームみたいので、ユーザーの入力を一度確認画面みたいな感じで表示してから送信したい時・・ ユーザーが問い合わせの入力 「確認」ボタンをクリック 入力した項目を一度確認画面に表示(入力とほとんど一緒) 「送信」ボタンをクリック 実際にモデルとして保存 という流れをRailsで実装する時の定石 Model Question validates :title, presence: true validates :name, presence: true validates :content, presence: true validates_acceptance_of :confirming after_validation :check_confirming def check_confirming errors.delete(:confirming) self.conf
はじめに Railsアプリケーションを本格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて
translations Documentation RSpec is a great tool in the behavior-driven development (BDD) process of writing human readable specifications that direct and validate the development of your application. On the web there are many resources that give complete overview of _what_ you can do with RSpec. But there are fewer resources devoted to how to create a great RSpec test suite. Better Specs tries to
Rails開発環境の構築(rbenvでRuby導入からBundler、Rails導入まで)(Macport編)RubyRailsMacmacportsrbenv ※お願い:最近時間がなかなか取れず、Rails5.xの時代になったというのに未だに5.xでの確認ができておりません。どなたか、5.xでも本記事の内容がうまくいった、と確認されました方はコメント欄にてご一報をいただけますと大変嬉しいです。 (本記事は今の所Rails 3.x〜4.2 対応です) (Homebrew編も公開しました) はじめに:Railsをローカルインストールするという発想 今さらですが、Mac環境でrbenvを使って、Ruby・Rails環境を構築するための記事をまとめてみました。 bundlerでgemをRailsプロジェクト内にローカルインストールすることで、ruby環境を汚さずにRailsプロジェクトを生成でき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く