■
Windows/Office武勇伝 <Surface Proが当たる! 開発者グループOPENキャンペーン>
電話サポートでこんな相談受けました。
相談者: 『ウィンドウを最大化すると画面に現れるけど、「元のサイズに戻す」と画面から消えてしまいます。』
私: 「Alt + Space ⇒ M ⇒ 右矢印キーや下矢印キーを何度か押してください。バーが見えたらウィンドウ隅をつまんでドラッグしてください」
で解決しました。
Rails のソースを grep するツール
rails プロジェクト配下のソースファイルを grep するコマンドです。
5ヶ月ほど前の拾い物、 https://gist.github.com/189815/ が微妙に使いづらいので書き直してみた。
(まだまだ不備とかあると思うので、がしがし鍛えてやってください)
ソースはここ
↓
https://gist.github.com/1403631
$HOME/bin/ とかに入れて使えばよいかと。
grep コマンドのオプションがそのまま使えます。
Timezone の扱い
http://railscasts.com/episodes/103-site-wide-announcements に以下のようなロジックがあります。
def self.current_announcements(hide_time) with_scope :find => { :conditions => "starts_at <= now() AND ends_at >= now()" } do if hide_time.nil? find(:all) else find(:all, :conditions => ["updated_at > ? OR starts_at > ?", hide_time, hide_time]) end end end
このロジックの日時の部分でハマりました。
Timezoneの扱いです。
私の理解では
- config.time_zone = 'Tokyo' としてもしなくてもDBには UTC で記録される
- config.time_zone = 'Tokyo' とすると、Rails 経由だとよきに計らってくれる
- "starts_at <= now() ..." と ["starts_at <= ? ...", Time.now] はどっちも、期待する結果になりません
今のところ…
["starts_at <= ? ...", Time.now - 9.hour]
というダサいコードになっています orz
上記だと hide_time も時間差注意ですね。
ちなみに now() は MySQL ではOKだけど、SQLite3 ではNGでした。
あと、デバッグは console で
ActiveRecord::Base.logger = Logger.new(STDOUT)
するとSQL文が展開表示されるので Goodです。
申込み内容を一旦保存して、カード決済のサイトへ
備忘録です。他の人がこのパターンに合致するかは分かりません。
あと、Paypal じゃないよ。
「確認画面 ⇒ カード情報入力な別サイト ⇒ ThankYou画面」の流れがわかった。
別サイト遷移直前に
1) モデル保存。その際、session に id 保存
2) 別サイトフォームを表示。ただし、Javascript で自動POST
3) ThankYou画面に戻ってきたら保存した session を load
def create ... if @order.save redirect_to :action => :my_delegate, :id => @order.id else ... end def my_delegate @order = Order.find(params[:id]) session[:order_id] = @order.id end def done @order = Order.find(session[:id]) end
view
<form name="hoge" method="post" action="http://othersite.example.jp/..."> ... <%= submit_tag '画面が自動的に切り替わらない場合はクリック' %> </form> <% javascript_tag do %> document.hoge.submit(); <% end %>
入力内容を保存するタイミングでずっと悩んでいました。
本来は create アクションで保存後に別サイトに POST する事ができれば良いのですが、
一発ではできないようなので、このような案となりました。
button_to に disable_with オプションは無い
以下の様に使いたくなりましたが、disable_with オプションはありませんでした。
<%= button_to('調べる!(5分ぐらい掛ります)', check_hoges_path, :disable_with => '調査中...') %>
以下で対応しました。
<% form_tag check_hoges_path do %> <%= submit_tag('調べる!(5分ぐらい掛ります)', :disable_with => '調査中...') %> <% end %>