kansiho's memo

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

Ruby/Ruby on Rails

[つくれぽ]使用しているパーシャルテンプレートをビューに表示してくれるgemをつくりました

初めてgemを作りました。 公開1日で300人のダウンロードがあり、なかなか達成感がありました。 とても簡単なので、是非是非railsユーザでgemを作ったことのない方は試して見てください。 作ったgemは、current_template という、現在表示しているテンプレー…

【Rails5】Doorkeeper gemでOAuth2.0のためのAPIを作って、rubyクライアントで呼び出す

DooerkeeperはOAuth 2のプロバイダ(認証する側のサーバー)を簡単に実装できるgemです。 意外とハマったので書いておきます! Doorkeeper gemをインストール github.com #Gemfile gem 'doorkeeper' gem 'doorkeeper-i18n' # default localeを en 以外で使う…

Rails5でメールを送る前にlocalhost:3000でプレビューする方法

すっかり, txt形式ではなくhtml形式の綺麗なメールマガジンが主流になりましたね. html形式だと受け取り側の開封確認も受信側からできますから便利なんでしょう. というわけで私もメールテンプレートを購入し, 作って見たのですが, あれ, どうやってこれ確認…

Rails5でturbolinksをオフにする時に気をつけること

iframeで呼び出したRailsアプリケーションで、ドキュメント読み込み後に発火するjavascriptメソッドが動かないということがありましたので、turbolinks切っちゃおうと思い実行したメモ書きです。 Rails5.0.0以降では、 gem 'turbolinks'と //= require turbo…

よくつかう正規表現

正規表現は、ある文字の並び(文字列)を表現する一つの方式です。正規表現はそもそも、人の神経系がどのように機能しているかの研究において開発され、UNIX の中心的な考案者 Ken Thompson によってコンピュータでの検索アルゴリズムに組み込まれたことから…

文章類似度判定アルゴリズムとrubyでの実装例(1)n-gram, Jaccard Similarity

n-gram n-gramは、フランス語や日本語や大阪弁といった、人が自然に使う言語「自然言語」で記述された文章の特徴を定量的に分析するために開発された手法。「N文字インデックス法」ともいう。 ある文章の中に、ある文字の並びが何回出現したか、をカウントす…

Rails5 user_idじゃなくてusernameでusers#show

twitter.com/kansiho みたいな感じでuser nameでusers#showにつなげたいときありますよね。 config/routes.rb Rails.application.routes.draw do get '/:username' => 'users#show', :constrain => { :username => /[a-zA-Z-]+/ } end このとき、最終行に書…

Rails5でDeviseにプロフィール画像項目を追加するときのTips

gemを入れる deviseはインストールされている前提で進めます。 gem 'devise' # 以下、追加 gem 'carrierwave' gem 'mini_magick' uploaderを作る $ rails g uploader Avatar avatar_uploader.rb で, include Carrierwave::MiniMagick をコメントアウトして有…

【Rails5】ActionCableリアルタイムチャットを実装。

Action Cableは、 WebSocketとRailsのその他の部分をシームレスに統合するためのものです。Action Cable が導入されたことで、Rails アプリケーションの効率の良さとスケーラビリティを損なわずに、通常のRailsアプリケーションと同じスタイル・方法でリアル…

Ruby on Railsユーザ向け速習CoffeScript + vim のシンタックス設定

Ruby on Railsの生みの親であるDHHが、次期バージョンのRails3.1でjQueryやSCSSと合わせて、CoffeeScriptをデフォルトとして採用するとTwitter上で発言して注目を集めた. Rubyist, Pythonia にはとっても馴染みやすいので, 手っ取り早くこれを頭に入れておけ…

Deviseで管理者が承認したらユーザーのアカウントをアクティベートする実装【Rails】

userカラムにapprovedを足す class AddApprovedToUser < ActiveRecord::Migration def self.up add_column :users, :approved, :boolean, :default => false, :null => false add_index :users, :approved end def self.down remove_index :users, :approved…

railsからfacebookにnotification APIで通知を送る

頻繁にユーザーが見るfacebookに通知を送る方法。 jp.techcrunch.com https://graph.facebook.com/{recipient_userid}/notifications?access_token={application_access_token}&template={Your_Message}&href={URL_to_your_app_or_request} にPOSTする。 2つ…

今あるデータベースからseed-fu gemを利用してfixtureデータを作る

今あるデータベースからseed-fu gemを利用してfixtureデータを作る。 カテゴリの名前の取り込みなどに使うと便利。 rails consoleで SeedFu::Writer.write('db/fixtures/user.rb',{ class_name: ‘User'}) do |writer| User.all.each do |user| writer << use…

メタプログラミングを超ていねいにまとめる【第1章:オブジェクト指向、インスタンス変数、メソッド、定数、モジュール、クラスのメタプロ的な捉え方】

メタプログラミングとは何か 例1) ActiveRecord::Base 例2) オープンクラスとモンキーパッチ オープンクラスの問題点:モンキーパッチ クラスの真実 インスタンス変数 メソッド メソッドの名称を区分する:インスタンスメソッド クラスだってオブジェクトで…

bootstrap tagsinput と typeahead.js で予測機能つきのタグ入力ボックスを作る

他の人がどんな入力をしたかを確認しつつ、ユーザーがタグを登録できたら使い勝手が良いと思って調べてみた。 qiita.com を参考に、 typeahead.jsは以下のバージョン0.9.3を使用。 Kingboard/typeahead.js at master · Kingboard/Kingboard · GitHub CSSは以…

HerokuでRailsを運用するメリットデメリットについて

基本はAWSでRailsアプリを運用することが多かったのですが、 インフラ面に割く時間を減らしてアプリケーション開発自体に集中したいな、herokuでも東京リージョン使えるようになったらしいしな… ということで、いろいろ調べてみたまとめです。 herokuは「遅…

BowerをRailsプロジェクトに導入する

Bowerとはなにか Railsで外部JavaScriptライブラリなどのAssetを管理するなら、bower-railsが便利 | mah365 javascriptの世界の管理ツール。Rubyの世界のBundlerのようなもの。Railsで手軽に使えるようにしたのがbower-railsというgem。 Bower入門(基礎編) -…

非エンジニアが管理しやすいRuby on Railsアプリの作り方を考える[wordpress/CMS/ブログシステム]

受託開発をするにあたって、気をつけなくてはいけないのが、管理画面の非エンジニアにとっての使い勝手の良さだ。 wordpressなみの管理画面の使用感を持ちつつ、Railsでスケーラブルな構成にするためにはどうしたらいいかちょっと調べてみた。 1. wordpress …