2015年9月9日水曜日

2015年6月28日日曜日

therubyracer-0.12.2/lib/v8/context.rb:99: Segmentation fault at 0x00000000000000

precompile時にずらずらと長いエラーが吐かれます。
既知のバグのようでissueにもあがっていましたが解決方法がなさそうなの therubyracer の使用を諦めてnodejsをおとなしく使う事にしました。

Gemfilesでtherubyracerをコメントアウトし、nodejsがサーバに入っていない場合は入れる

manifest*: No such file or directory

capistranoがmanifestがないとエラーを出した場合


touch shared/assets/manifest

2015年2月7日土曜日

Carrierwave逆引き

CarrierWaveの画像URL絶対パス

image_file.url は相対バス(保存時は/upload/tmpからなど)を示すためRmagickで読み込みたい場合などはimage_file.pathで絶対パスを取得してアクセスする。

View逆引き

JS,CSSなどのRailsを使わないtipsも含む


ネストしたresourcesのform_for

resources :blogs do
 resources :pages do
 end
end
の場合
form_for([@blog, @page])

[:blog,@page]などとしても新規登録の際はエラーが出ないが、編集時はエラーが出る。

リンク(link_to)にアイコンをつける

<%= link_to "編集", edit_blog_path(blog) %>
リンクにタグを含めたい場合はリンクのラベルを描かずに do-endでリンクに含めたいタグを囲む。
<%= link_to edit_blog_path(blog) do %>
   <i class=" fa fa-edit"></i>編集
<% end %>


Submitボタンの二重登録防止

<%= f.submit  data: { disable_with: "送信しています!" }  %>

1度ボタンを押すとボタンを押す事ができなくなる。rails-ujsの機能。

テキストエリアでタブ(tab)を入力する

通常の動作では次のinput項目に選択が移ってしまいますが以下のサイトの方法では一通りの環境では良さそうでした。素晴らしいですね。

RMagick逆引き

以下全てimageはrmagickのImageオブジェクトとする。

ファイルから読み込み

image = Magick::Image.read("ファイルパス").shift
又は以下も可
ImageList.new("パス")

ファイルへ書き出し

image.write("ファイルパス")

urlから画像をロード

image = ImageList.new("画像のurl")
2.13.4では動作を確認済み。古いRmagickではできない。Imageでも可能なのかは試していない。

角丸の画像への変換

RMagickで画像を影つき角丸四角に変換する - 画像処理についてあれこれ

グラディエーションをかける

RMagickでグラデーション画像を生成する - 画像処理についてあれこれ

シャープにする

image.sharpen(radius=0.0, sigma=1.0) 

radiusは0にしておいてもsigmaの値に合わせて補正してくれるらしいです。
オリジナル 48px

左から なし,1,3,0.3,0.2




48pxを32pxに縮小した後にsharpenのsigmaの値を変えながらかけてみました。



2015年2月6日金曜日

Model,Controller 逆引き

バリデーションのエラーメッセージをモデル全体につける

カラムにエラーメッセージをつけるのではなく、モデル全体に対するエラーをつける。
errors[:base]<< "これはモデルにつけたメッセージです"
エラー出力はメッセージがそのまま表示される。

UUIDを求める

SecureRandom.uuid
実行結果 "e03c17d9-b5cb-419b-bf1f-07959df2ea35"

RequestをModel内でも参照

Gem request_store を使用する。
Controllerで
RequestStore.store[:request] = request
Modelで
request = RequestStore.store[:request]

特定のカラムが更新されたか調べる?

update時にコールバックの中でカラムnameが変更された時のみ処理をしたい場合など_changed?をつける。
self.name_changed?

開発中にAssetsのログを出力したくない場合

Started GET "/assets/..../hoge.png" for 127.0.0.1...
のようなログが出てうっとうしい場合

group :development do
  gem 'quiet_assets'
end