0

PHP_EOL

PHPで改行を表す定義済み定数。
しらんかった。

PHP_EOL

シングルクオテーション派には、ソースが少しきれいになりますね。

0

Railsでユーザー認証

Railsでユーザー認証するプラグインは、いくつか存在するけど、一番扱いやすいのはacts_as_authenticatedと思います。

で、インストールしようと思ってがんばったけど、メール認証のところでどうしてもこける。
結局、googleで検索したらこちらのブログで丁寧な解説をされていたのでソースをそのまま拝借したところ、うまくいきました。感謝感謝。

ログイン後のページでようこそ○○さんとかだすのは、これでOK
ようこそ< %= current_user.login %>さん

ただ、このacts_as_authenticatedはユーザーがログインしてるかどうかを毎回DBに読みにいってる?のでパフォーマンス的には問題があります。
そこを調査修正したいけど、rubyをイマイチ理解してない自分には骨の折れる作業です。

railsの生産性の高さがすばらしいとされるけど、やはりrubyを覚えないことにはphpでごりごり書くとの劇的な変化はないと思う。
rubyをある程度覚えた後のrailsほんとすごい。

まずはruby。
関係ないけど、美しいコードが書けるスクリプト言語はPythonに限る。

0

railsでメール送信

railsでメールを送信するには、Iso2022jpMailerを使います。デフォルトのActionMailerを使うのですが、これはutf-8のみということでIso2022jpMailerのほうが便利です。

Iso2022jpMailerは、ActiveHeart という日本の環境で使いやすくするためのpluginに梱包されています。
具体的には以下の3 つのライブラリから構成されています。

ActiveRecordMessagesJa – ActiveRecord のヴァリデートメッセージの日本語化
ActiveRecord のヴァリデートメッセージを日本語に置き換えます。英語がハードコーディングされている部分にも対応しています。
TransSid – session を cookie でなく URL で引き回す
日本の携帯には cookie の使えない機種が多くあります。そのような端末でも session を使えるようにします。
Iso2022jpMailer – 日本語メール送信処理
メールを送信する際、文字コードを iso-2022-jp に変更します。

インストール
# ./script/plugin install http://svn.rails2u.com/public/plugins/trunk/active_heart

scaffoldみたくジェネレートしてやる
# ruby script/generate mailer ContactMailer result

モデル
class ContactMailer < Iso2022jpMailer
def result(random)
@subject = 'タイトル'
@body["random"] = random
@recipients = 'hoge@hoge.com'
@from = 'hoge@hoge.com'
@sent_on = Time.now
@headers = {}
end
end

コントローラーで呼び出し
methodにdeliver_をつけるのがみそ
def sendmail
ContactMailer.deliver_result(rand())
end

result.rhtml
下記URLより本認証を行ってください。
http://192.168.128.115:3000/account/setup?rid=<%= @random %>

0

Railsのテーブル名で使う複数形を調べる

Railsでは、DBのテーブル名は複数形でそれに紐ずくmodelは単数形となります。
でもこれは非英語圏の人間からすると困った規約です。

これを助けてくれるコマンドはRailsで備えています。
いつものscript/server~ではなく、コンソール上で行います。
でもまずは、いつもの。
ruby script/console

そして単数形を複数形に。
>> "user".pluralize
=> "users"

これでテーブル名を命名する幅が広がりそう。

0

PHPで現在のURLを取得

/**
* 現在のページのURL
*/
if( isset($_SERVER['HTTPS']) ){
$http = ($_SERVER['HTTPS'])?'https://':'http://';
}else{
$http = 'https://';
}
define('CONFIG_THIS_URL',$http.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
echo CONFIG_THIS_URL;