Rails 5.1とTwitter Bootstrapをつかったアプリケーションに検索機能をつけました。個人的忘備録で、手順のメモを書いておきます。
Railsのエラー画面をわかりやすく表示してくれるBetter Errors(better_errors)、GitHubのRuby系プロジェクトの中で一ヶ月で1番Starがついてたみたいです。ということでさっそく使ってみました! charliesome/better_errors - GitHub 🏀 Better Errorsとは?Better ErrorsはRack(RailsとかSinatraとか)のエラー画面をデバッグしやすい形に整形してくれるGemです。 このGemの特徴は次の3つです。 * 綺麗なUI * わかりやすいエラーメッセージ * ブラウザからのirb(PERL)によるdebugが可能 インストールは、Gemfileに次の行を追加してbundle installするだけです。 group :development do # エラー画面をわかりやすく整形してくれる ge
twitter風のデータロード画面を作成した時にはまったので対処メモ 環境はruby-1.9.3-p0, rails3.2.2, postgres, Twitter Bootstrap v2.1です。 難易度★★★☆☆ rails3でtwitterのように画面をスクロールしてデータを自動ローディングするには、 jquery.pagelessを使うのがお薦めです。 しかし、jquery.pagelessを利用する場合には、ファイルの配置場所に注意する必要があります。 Twitter Bootstrapと連携する時に少しはまってしまったのでメモを残します。 スクリプトは最後に置く WEBページでプログレッシブ・レンダリング(ページを徐々に読み込むこと)を実現するには、なるべくページの下でスクリプトファイルを読むようにします。 なぜなら、スクリプトは下に配置した全てのコンテンツをブロックします。
S3接続設定用のファイルconfig/s3.ymlを作成します。接続情報はAWSコンソールから確認できます。 東京リージョンを利用する場合はs3_host_nameを説定する必要があります。ここは軽くはまりました。 development: bucket: hoge-bucket access_key_id: xxxx secret_access_key: xxxx s3_host_name: s3-ap-northeast-1.amazonaws.com production: bucket: hoge-bucket access_key_id: xxxx secret_access_key: xxxx s3_host_name: s3-ap-northeast-1.amazonaws.com
GithubのWikiに書いてあるんだけど、Rails+rspec+deviseで現在のユーザー情報を使用するを書いたついでに。 RAILS_ROOT/spec/supportsディレクトリにこれを作って、 # controller_macros.rb module ControllerMacros def login_user before(:each) do @request.env["devise.mapping"] = Devise.mappings[:user] sign_in Factory.create(:user) end end end spec_helper.rbにこれを追記して、 RSpec.configure do |config| config.include Devise::TestHelpers, :type => :controller config.ext
Deviseを使い、一般ユーザーは管理者からしか作成できないようにする。 初めに、一般ユーザーと管理者ユーザーを分けるには https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role にあるように2つの方法があるようだ。 ここでは、Option2の方法、すなわち、userモデルに、adminフィールドを追加し、そのbooleanで一般ユーザーか管理者かを分ける方法をとる。 Option2のとおりに $ rails generate migration add_admin_to_users admin:boolean $ rake db:migrate とし、あとは、ページで管理者ならば if current_user.try(:admin?) # do something end と言うコードを追加する。 ま
model を作ったときの default 値は http://stackoverflow.com/questions/1550688/how-do-i-create-a-default-value-for-attributes-in-rails-activerecords-model にもある通り class MyModel < ActiveRecord::Base after_initialize :default_values private def default_values self.name ||= "default value" end end で設定すると良いみたい。 ※self.name がカラムで、default value が値。 before_create や before_save でも同様のことができるらしいが、after_initialize は DB に保
Javaの常識を変える「Play framework」とは 「Play framework」は、サーバサイドJavaとScalaのためのMVCフレームワークです。この連載では、主にJavaのフレームワークとしてのPlay frameworkを紹介していきます。でも「Javaで、Web向けで、MVCで……」なんて、ありふれた感じですよね。それなら「Scalaで、どう作るのか」という話の方が興味あるという方もいるでしょう。 しかし、Play frameworkはバージョン1まではJavaのフレームワークとして作られていました。また、ScalaはJavaVM上で動作するプログラミング言語です。つまり現在の最新バージョンの2でも基礎の部分で動いているのはJavaです。Play frameworkを知るためには、まず基礎から固めていくのが正攻法だと思います。Scalaについて知りたい読者は、以下の記
has_many :throughで多対多の関連を設定する場合に、組み合わせの一意性を検証する方法。Railsレシピブックにあった例ですが、EntryとCategoryの間に多対多の関連があり、それをCategorizationsとしている場合に一意性を検証するには、 class Categorizations < ActiveRecord::Base belongs_to :category, :dependent => :destroy belongs_to :entry, :dependent => :destroy # ここを追加 validates_uniqueness_of :category_id, :scope => [:entry_id] end class Category < ActiveRecord::Base has_many :categorizations #
特定の親の下でユニークな名前にしたい場合 validatesのuniquenessに:scopeを入れる。 class Parent < ActiveRecord::Base has_many :children end class Children < ActiveRecord::Base belongs_to :parent validates :name, :uniquness => {:scope => :parent_id} end さらに、エラーメッセージも変えたい場合 :uniquenessのoptionとして:messagesを入れる。 日本語を入れる場合はmagic commentが必要なのに注意。 # -*- coding:utf-8 -*- class Children < ActiveRecord::Base belongs_to :parent validates
外部サービスと連携すると、連携するサービスの状況に依存していろいろなエラーが発生したりします。 例えば外部サービスが高負荷であるために、タイムアウトのエラーが発生したり、強制的にコネクションをリセットされるようなエラーなど様々です。 その状況が発生した際に、利用ユーザにエラー画面を表示したり、再操作を指示するメッセージを表示するのは、ユーザ視点で考えると微妙ですね。 ではどうすればよいでしょうか? そんなときは、retryableというライブラリ(gem)を利用するとよいです。 このretryableというgemは、名称から推測できるとおり、失敗(エラー)したときにリトライしてれるものです。 例えば、SonicGardenが提供しているサービス『youRoom』では、Facebookアカウントでログインという機能があります。 その認証に稀ではありますが以下のようなエラーが発生することがあり
Time 型の表示は to_s よりも to_s(:db) の方が分かりやすいので良く使うのですが、Time と TimeWithZone で動きが違うことに気がつかず、とてもはまりました。 具体的にはこの違い... > Time.now.yesterday.to_s(:db) #=> "2012-04-03 03:02:39" > 1.days.ago.to_s(:db) #=> "2012-04-02 18:02:48" 上(Time.now.yesterday)はTimeクラス、下(1.days.ago)は TimeWithZoneクラスです。 ソースを読んでみると、TimeWithZone.to_sは :db が指定されたとき UTC の時間を返します。Time.to_s(:db)はJSTのまま返すので9時間の違いがうまれてしまうのです。 :db 以外は 同じです(正確にはフォーマ
こんにちは。毎年花粉症になりかけている飯塚です。 最近のNode.jsの普及などによってサーバサイドJavaScript界隈が盛り上がっています。 そんなホットなJavaScriptをラクにかつエレガントに書くためのCoffeeScriptという言語をチュートリアル風に紹介します。 何かしらのライブラリを自分で書く程度にJavaScriptで開発している人は絶対に使ったほうがいいと思います。 JavaScriptを知っていれば1-2時間程度で十分駆使できるようになります。 (2011/6/28:@m_satyr様にご指摘頂いた箇所を修正しました。) 目次 CoffeeScriptとは? インストール Hello World 構文 関数 変数展開 Objectの生成 ループ 存在チェック ヒアドキュメント thisのバインド クラス 無名関数 {var} Tips ?の使い分け 存在チェック
いつぞやの飲み会で、 これだけウェブの技術が進化しているのだから、もっとオシャレなエロサイトがあってもいいんでないかい? << という話になりまして。 だけどどうせ作るんならということで、Rails3 と jQuery を使って結構マジメにつくってみました。 (※大人の事情により、リンクはやむなく削除しました) 当初はエロにオシャレは必要ないのかなーと思ったときもありましたが、いざつくってみると、やっぱり選べるならオシャレなやつの方ががいいよね、という結論に落ち着きました。 今回つくったのは試験的なものなので 90日間限定でしか公開しないつもりですが、日本のエロサイトが今後もっとオシャレに発展していくきっかけになってくれたら嬉しいです。 以下、サイトのコンセプトや使っている技術についてまとめてみます。 **Rails3 と jQuery で真面目にオシャレなエロサイトをつくってみました 1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く