gaku様の備忘録

プログラミングとか、夢と現実と理想とか。。。

Unicornの再起動

railsサーバのUnicornの再起動方法
Unicornキル:

kill -QUIT `cat /tmp/unicorn.pid`

で殺して、デベロップ版かプロダクション版か選ぶ
プロダクション:

bundle exec unicorn -E production -c config/unicorn.rb -D

デベロップ:

bundle exec unicorn_rails -c config/unicorn.rb -E development -D

■一言
久しぶりの投稿
いろいろ書きたいんだけど、ブログ書く時間あったら
コード書いちゃう。。。
どっちも頑張ります(´・ω・`)

【CollegeShare】ヘルプ書いたよ~

f:id:gaku3601:20141110231121p:plain
http://www.collegeshare.jp/

こんな感じ。
ただ、ページ用意してざっくり書いた感じなので、これから作りこんでいく。
f:id:gaku3601:20141110231318p:plain
学校が選択肢にないときはどうすればいいかわからないと思ったので作った次第です。

もっといろんな機能付けたいけど、会社が開発フェーズのためプライベートにまったく
時間が割けていない今日この頃。
とりあえず、今日のところは帰ってきたばかりだけど寝ます(・ω・)ノ

仕事しながらどこまでサイト作れるかやってみた

苦節4か月、ついにサイト1本完成しました!

「College Share」

http://www.collegeshare.jp


f:id:gaku3601:20141103202352p:plain

妹に「使って~」って教えたら、ちらほら投稿数も出てきました。
口コミ効果ってすごい。

内容としては、テスト過去問とか課題とかノートとか
学校資料を投稿してみんなでわちゃわちゃできるサイトです。

こんな感じ
f:id:gaku3601:20141103203021p:plain

まだまだ、バグがあるかと思いますがおいおい修正していきます!

railsはじめて4か月だったけど、ここまで作れるとは思いませんでした。
恐るべしrails。。。

社会人って時間ないからプライベート実装とかで、形になるものってできないと
思ってました。しかし、やればできるものですね!

「人間やるかやらないか」

これを再認識できた4か月でした。

2次フェーズ構想案や学校追加要望ありましたら以下のメールアドレスまで
お願いします。
適宜対応します~(・ω・)b
pro.gaku@gmail.com

次の一手!サイト制作構想案あるから年内中にもう一本書くのが目標です。

invalid byte sequence in UTF-8エラーに悩む

SQLiteからMySQLにDBを変更した途端、ユーザ登録時にタイトルのエラーが出て悩んでた。
こけた理由としては、ユーザ登録時に一緒にユーザのデフォルト画像をDBにあげていたのだが、
その点でこけていた。

ここが問題点

ef set_default_value
          self.username ||= "名無しさん"
          self.school_id ||= 1
          self.grade ||= 1
          self.imagefilename ||= "index.jpg"
          self.imagefile ||= File.read("app/assets/images/index.jpg”) ←ここ
     end
end

user生成時にprofileも生成して、デフォルト設定している感じ。

File.readをFile.binreadへ変更するとエラーがなくなった。

SQLiteでいけて、MySQLでいけないとか聞いてないよ。。。

railsでdeviseプラグイン使用時、エラーメッセージを日本語化する

Deviseを使用しているとサインアップの内容に誤りがあった場合、以下のようなエラーメッセージを出力してくれる。
f:id:gaku3601:20141004184416p:plain
「2 errors prohibited this user from being saved:」は簡単に修正できる。
/config/locales/devise.en.ymlを以下の様に編集する。

errors:
    messages:
      already_confirmed: "was already confirmed, please try signing in"
      confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
      expired: "has expired, please request a new one"
      not_found: "not found"
      not_locked: "was not locked"
      not_saved:
        #one: "1 error prohibited this %{resource} from being saved:"
        one: "1つのエラーがあります。修正して再度送信して下さい。:"
        #other: "%{count} errors prohibited this %{resource} from being saved:"
        other: "%{count}のエラーがあります。修正して再度送信して下さい。"

このように修正すると先ほどのメッセージが日本語化される。

問題は
・Email can't be blank
・Password can't be blank
の部分。
文書内検索をしてもヒットする件数は0。
どうしたものかとGoogleで検索していると、どうやらActiveRecodeが自動で出力しているということだった。
ということで先ほどのファイルに以下を追加してどうなるか検証。

errors:
    messages:
      already_confirmed: "was already confirmed, please try signing in"
      confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
      expired: "has expired, please request a new one"
      not_found: "not found"
      not_locked: "was not locked"
      not_saved:
        one: "1つのエラーがあります。修正して再度送信して下さい。:"
        other: "%{count}のエラーがあります。修正して再度送信して下さい。"
      taken: "は既に使用されています。"
      blank: "が入力されていません。"
      too_short: "は%{count}文字以上に設定して下さい。"
      too_long: "は%{count}文字以下に設定して下さい。"
      invalid: "は有効でありません。"
      confirmation: "が内容とあっていません。"

f:id:gaku3601:20141004185445p:plain
見事成功。
しかし、EmailとかPaswordConfirmationとか文頭が英語で出てしまう。
まぁ、いいか。。。

■gaku様の一言
結構有益な情報じゃね?
Googleで検索しても英語文献しか出てこないようなのを中心にUPしていこうと思います(´・ω・`)

■参考文献
http://d.hatena.ne.jp/hardcore100/20080214/1202985276

jQueryでformの必須チェック処理 part2

前回のプログラムの続き。
必須項目に入力されていない場合、「必須入力です」と出力するプログラムです。
以下コード

//入力チェックを行うJS
//formでclass="check-form"
//チェックしたいinputでclass="check-item"
//エラー時に出力したいメッセージでclass="accessibility-option"
$(function(){
 $(".accessibility-option").css("display", "none");
 $('.check-form').submit( function( e ) {
 	$(".accessibility-option").css("display", "none");
 	var flag = true; 
 	$(".check-item").each(function() {
 		if($(this).val() == ""){
 			$(this).prev(".accessibility-option").css("display", "inline");
 			flag = false;
 		}
 	});

       return flag;
 } );
});

formの指定、inputの指定は前回と同じ
出力させたい部分でclass="accessibility-option"と入力してあげれば使えます。

こんな感じ

<span class="accessibility-option">必須入力です。</span>

でこんな感じになる

f:id:gaku3601:20140913195229p:plain

submitしたら出てくる(´・ω・`)

■gaku様のひとこと
CSSがあまりうまく記述できないので、最初冗長な書き方になってた。
$(this).prev(".accessibility-option")
ここの一文に1時間かけた感じ。
まぁ、やりたいことは出来たけど糞こーどですな(´・ω・`)
まぁいいや(´・ω・`)