RoRで アプリから httpのAPIへ post送信する プログラムを実装してたら
わけわからんエラーでハマった
#<WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: POST http://~(APIのURL)
なんぞ?
ググりまくったら とあるスレッド発見
Trying to get selenium working in rails 3 - "WebMock::NetConnectNotAllowedError" - Stack Overflow http://stackoverflow.com/questions/5980856/trying-to-get-selenium-working-in-rails-3-webmocknetconnectnotallowederror
↑Answersを グーグル先生翻訳
あなたはwebmockを使用しているからだ。これは、すべての発信HTTP要求をブロックします。
あなたがそれを必要としない場合は、Gemfileからそれを削除してください。あなたがそれを必要としない場合は、あなたのニーズに、より正確にそれを設定する必要があるかもしれません:
あんだって????
Gemfileを確認したら たしかに webmock が developmentに設定されていた
しかも動作確認は RAILS_ENV=developmentでやってた・・・
RAILS_ENV=production で起動しなおし、動作した こんなことだったなんて・・・
2013/09/30
2012/12/08
[Rails] 現在時刻・1分前の時刻・1分後の時刻
railsコンソールで確認。(鯖はUTC)
1.9.1 :053 > now=Time.zone.now; ago=Time.zone.now.ago(60); after=1.minutes.from_now;
1.9.1 :054 > now.to_s + ' | ' + ago.to_s + ' | ' + after.to_s
=> "2012-12-08 16:09:41 | 2012-12-08 16:08:41 | 2012-12-08 16:10:41"
同じように書けないの・・・・?うーん
2012/12/05
[Rails] 日付データの取り扱い:DB保存のタイムゾーンと、表示時のタイムゾーンを別にしたい時
DB保存はUTCで、画面表示時はそれぞれのタイムゾーンで(例えばJSTで)とか
Rails3 だと config/application.rb で 保存するタイムゾーンと 画面表示時に使うタイムゾーンを分けて設定できる
↓保存時のタイムゾーン
↓表示時のタイムゾーン
ただし、↑この便利な設定の恩恵にあずかるには、保存する 日付フィールドを ただのTimeで保存してはダメ
ActiveSupport::TimeWithZoneクラスにする必要がある
start_at = Time.parse("入力された日付")
↑とかだと Timeクラスになっってしまう(コンソールとかで確認できる)
start_at = Time.zone.parse("入力された日付")
↑常に Time.zone を使うようにしないとダメ
参考)
Rails3系のtimezoneの扱いに関するメモ #Rails - Qiita http://qiita.com/items/68341489a9c5149b815d
[Rials3]Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal ~未来志向で行こう~ http://d.hatena.ne.jp/twodollarz/20120703
Rails3 だと config/application.rb で 保存するタイムゾーンと 画面表示時に使うタイムゾーンを分けて設定できる
↓保存時のタイムゾーン
config.active_record.default_timezone = :local
※設定しない場合は default='utc'
↓表示時のタイムゾーン
config.time_zone = 'Tokyo'
※Controllerで ユーザのタイムゾーンを↑切り替えれば 指定のタイムゾーンで表示される(はず)
ただし、↑この便利な設定の恩恵にあずかるには、保存する 日付フィールドを ただのTimeで保存してはダメ
ActiveSupport::TimeWithZoneクラスにする必要がある
start_at = Time.parse("入力された日付")
↑とかだと Timeクラスになっってしまう(コンソールとかで確認できる)
start_at = Time.zone.parse("入力された日付")
↑常に Time.zone を使うようにしないとダメ
参考)
Rails3系のtimezoneの扱いに関するメモ #Rails - Qiita http://qiita.com/items/68341489a9c5149b815d
[Rials3]Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal ~未来志向で行こう~ http://d.hatena.ne.jp/twodollarz/20120703
2012/12/03
[Rails] 便利なメソッド
・try()
nilでないときだけメソッドを実行
<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
・_was
<attr>_was <attr>の変更前の値。変更されてなかったら元の値。
<% if user.updated_at_was.present? %>
<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
<% end %>
nilでないときだけメソッドを実行
<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
・_was
<attr>_was <attr>の変更前の値。変更されてなかったら元の値。
<% if user.updated_at_was.present? %>
<%= user.updated_at.try(:strftime,'%Y/%m/%d') %>
<% end %>
2012/10/24
[Ruby][Rails3] クラスのインスタンスメソッドとスタティックメソッド
rubyでは スタティックなメソッドを クラスメソッドと呼ぶそうだ
参考)
クラスのメソッド - satake7’s memo http://d.hatena.ne.jp/satake7/20090124/p1
その他、参考になりそうなもの)
class_attribute:
class_inheritable_accessorからclass_attributeに移行する際の注意点 - odeの開発メモ日記 http://d.hatena.ne.jp/ode/20110928/1317188311
参考)
クラスのメソッド - satake7’s memo http://d.hatena.ne.jp/satake7/20090124/p1
その他、参考になりそうなもの)
class_attribute:
class_inheritable_accessorからclass_attributeに移行する際の注意点 - odeの開発メモ日記 http://d.hatena.ne.jp/ode/20110928/1317188311
2012/10/16
[Rails3] コントローラー名・Model名とか 複数形とか単数形とか
・Controller名
view内
<%= controller.controller_name %>
Controller内
ctrlname = controller_name # コントローラ名
・Model名
<%= controller.model_name %>
・action名
<%= controller.action_name %>
・Controller名を単数形にしたい(.singularize)
controller.controller_name.singularize
・複数形 .pluralize
参考)
Rails3 事始め: [Rails3] Viewでコントローラ名/アクション名を取得する http://rails3try.blogspot.jp/2011/06/rails3-viewcontrolleraction.html
Ruby On Rails | くるくるtech http://kurukuru-labo.com/tech/category/ruby-on-rails/
view内
<%= controller.controller_name %>
Controller内
ctrlname = controller_name # コントローラ名
・Model名
<%= controller.model_name %>
・action名
<%= controller.action_name %>
・Controller名を単数形にしたい(.singularize)
controller.controller_name.singularize
・複数形 .pluralize
参考)
Rails3 事始め: [Rails3] Viewでコントローラ名/アクション名を取得する http://rails3try.blogspot.jp/2011/06/rails3-viewcontrolleraction.html
Ruby On Rails | くるくるtech http://kurukuru-labo.com/tech/category/ruby-on-rails/
2012/09/18
[Rails3] before_validationとかの中で ARオブジェクトのカラムごとの値を確認する
入力フォームの中に チェックボックスとかあって、
チェックされれば 送信されてくるし、
されなければ 値は渡って来なかったりするときの
値が存在するかー?の確認
if read_attribute('delete_flg').present?
'delete_flg'は formのnameの部分(カラム名的な)
↓こんなな
<input type="checkbox" name="delete_flg" value="1">
write_attributeとかもあるらしい
参考)
ActiveRecordまとめ2 - ほむり http://d.hatena.ne.jp/jksy/20100512/1273658658
respond_to http://d.hatena.ne.jp/rochefort/20110508/p1
チェックされれば 送信されてくるし、
されなければ 値は渡って来なかったりするときの
値が存在するかー?の確認
if read_attribute('delete_flg').present?
'delete_flg'は formのnameの部分(カラム名的な)
↓こんなな
<input type="checkbox" name="delete_flg" value="1">
write_attributeとかもあるらしい
参考)
ActiveRecordまとめ2 - ほむり http://d.hatena.ne.jp/jksy/20100512/1273658658
respond_to http://d.hatena.ne.jp/rochefort/20110508/p1
2012/04/15
Railsの予約語の多さときたら・・・
テーブルの中に 「type」って名前のカラム作って 詰んで、
今度は 「Process」プロセスって名前のModel作ろうとしたら怒られて・・・
予約語なのかなー と思いつつ
エラーもわかりづらいし
ネットで調べても 日本語で予約後一覧がまとまっているページがない・・・
本家Wiki内に 「Reserved Words You Can’t Use」ってページをやっと見つけた
がしかし、このページもまた 参照の仕方がわからなくて、数分費やしたよ・・・なんでRubyとか Rails関連のドキュメントって、見やすくまとまってないの???
Rubyの本家のリファレンスも、索引つけるか、検索ぐらいできるようにしてよ
はぁ・・・
http://wiki.rubyonrails.org/rails/pages/reservedwords
(下の方の show pageボタンみたいのを押すとみられる)
今度は 「Process」プロセスって名前のModel作ろうとしたら怒られて・・・
予約語なのかなー と思いつつ
エラーもわかりづらいし
ネットで調べても 日本語で予約後一覧がまとまっているページがない・・・
本家Wiki内に 「Reserved Words You Can’t Use」ってページをやっと見つけた
がしかし、このページもまた 参照の仕方がわからなくて、数分費やしたよ・・・なんでRubyとか Rails関連のドキュメントって、見やすくまとまってないの???
Rubyの本家のリファレンスも、索引つけるか、検索ぐらいできるようにしてよ
はぁ・・・
http://wiki.rubyonrails.org/rails/pages/reservedwords
(下の方の show pageボタンみたいのを押すとみられる)
2012/04/12
DBから取ってきた ARオブジェクトを 必要な数だけ切り出す
- 環境:Rails3
PHPで言うarray_sliceですよ
users= User.find(:all, :conditions=>[" ~省略
#全体の件数
puts('count [' + users.size.to_s + ']')
#先頭から 3つ切り出す
puts(users.slice(0..2).to_yaml)
2012/04/10
I18nで国際化対応 − 翻訳メッセージに 変数を使う
- 環境:Rails3
I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'
変数を入れたい部分に %{変数名}を入れる
公式ガイド:
- Ruby on Rails Guides: Rails Internationalization (I18n) API - http://guides.rubyonrails.org/i18n.html
国際化 参考ページ↓
※変数を使用する部分が{{変数名}}で間違っているけど、その他の部分は概ね参考になる 公式ガイド(英語)と見比べるのがよろしい
- Rails 3 の I18n について - おもしろWEBサービス開発日記 - http://d.hatena.ne.jp/willnet/20100430/1272618929
- 【随時更新】RailsGuide 訳『Rails 国際化対応 - I18n API』 | JAM☆ぱん - http://playet.jugem.jp/?eid=134
こちらは基本的なところがわかりやすくまとまっております↓
- Rails3 事始め: [Rails3] I18n による日本語化の最低限の設定 - http://rails3try.blogspot.jp/2012/01/rails3.html
- Rails3 事始め: [Rails3] 国際化 I18n のまとめ(その1:準備編) - http://rails3try.blogspot.jp/2011/12/rails3-i18n_27.html
- Rails3 事始め: [Rails3] 国際化 I18n のまとめ(その2:ロケールの切り替え) - http://rails3try.blogspot.jp/2011/12/rails3-i18n.html
コードの中に日本語を書くとエラーになるときの おまじない
- 環境:Rails3
コードの中に日本語・・・
まあたとえば、
a = 'こんにちは'
↑的な?(試してないけど)
とにかく エラーが出ないためのおまじない
# encoding: utf-8
もしくは
# -*- coding: utf-8 -*-
を、ファイル頭に書く
参考)
Rails3 事始め: [Rails3] コードに日本語を書くとエラーになる件 - http://rails3try.blogspot.jp/2011/12/rails3_26.html
2012/04/07
削除されたものも検索したい時 「unscoped」を使う
論理削除とか使ってたりするときね
削除されたものも検索したい時 「unscoped」を使う
class Diary < ActiveRecord::Base # 論理削除 default_scope where(:deleted_at => nil)
削除されたものも検索したい時 「unscoped」を使う
# いつもの検索 deleted_at is null がSQLに付く Diary.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC") # 削除あり検索 Diary.unscoped.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")
ActiveRecordオブジェクトを そのままハッシュに入れたい時
ActiveRecord(AR)オブジェクトは
各オブジェクトごとの値を attributes っていうHashで保持しているらしい
・DEBUGは↓こんな感じ
attributesは
1件しかないARオブジェクトだったら
→ user.attributes
複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes
各オブジェクトごとの値を attributes っていうHashで保持しているらしい
user = User.find_by_user_id(params[:user_id]) logger.debug(user.to_yaml)#←中身デバッグ
・DEBUGは↓こんな感じ
[DEBUG] --- !ruby/object:User
attributes:
id: '1'
name: username
deleted_at: !!null
created_at: '2012-04-07 03:32:09'
updated_at: '2012-04-07 13:41:55'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false
attributesは
1件しかないARオブジェクトだったら
→ user.attributes
複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes
2012/03/31
2012/03/25
MacでEclipseでRubyOnRails開発環境
ちなみに、環境は Eclips Indigo (3.7.2) for MacOS X です
EclipseでのRails開発のために プラグインでRadRailsを 入れる
AptanaのRadRailsの公式サイトへ行く → Aptana RadRails
イクリプスの新規ソフトウェアのインストールでさっきのURLを入力
Aptana Studio 3 Pluginを選択してインストール開始
このプラグインでPHPとかの環境もいっぺんに入っちゃうみたい
Ruby環境だけで良かったんだけど、Rubyだけ選ぶことはできないみたい
インストール終わったら再起動
再起動したら なんか英語で言われたけど
よくわかんないので 続行にしといた
追記:FireFox使ってよ!みたいなメッセージだと解釈したので、「参照...」から、ローカルのFireFox.appを選択してあげたら次回起動からこのメッセージは出なくなったよ。
で、無事Aptanaのwelcomeページ
Rubyファイルも 無事認識されて、シンタックスハイライト表示もOK〜
EclipseでのRails開発のために プラグインでRadRailsを 入れる
AptanaのRadRailsの公式サイトへ行く → Aptana RadRails
ダウンロードページへ行って、You are about to download:で、Eclipse Plug-in Versionを選択してDownloadボタンを押す
(NameとかEmailとかは 別に入れなくて平気)
次のページで、プラグインDL用のURLが表示されるので クリップボードにコピー
イクリプスの新規ソフトウェアのインストールでさっきのURLを入力
Aptana Studio 3 Pluginを選択してインストール開始
このプラグインでPHPとかの環境もいっぺんに入っちゃうみたい
Ruby環境だけで良かったんだけど、Rubyだけ選ぶことはできないみたい
インストール終わったら再起動
再起動したら なんか英語で言われたけど
よくわかんないので 続行にしといた
追記:FireFox使ってよ!みたいなメッセージだと解釈したので、「参照...」から、ローカルのFireFox.appを選択してあげたら次回起動からこのメッセージは出なくなったよ。
で、無事Aptanaのwelcomeページ
Rubyファイルも 無事認識されて、シンタックスハイライト表示もOK〜
参考)
Eclipse+aptana RadRailsプラグインでGetting Started with Rails その1
- 全体的にガッとなっていたblog - http://d.hatena.ne.jp/N_Oda/20091213/1260685529
追記:
RadRailsだけのダウンロード先は↓こっちだった (´・ω・`)
http://www.aptana.com/products/radrails/download
ま、いっか。
登録:
投稿 (Atom)








