サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
somethingpg.hatenablog.com
苦手なのでRubyの例外処理まとめます raiseでエラーを表示させます raise 'error' #=>RuntimeError: error beginで例外を捕捉します。beginは例外が発生しそうな箇所に使用します begin 1/0 rescue = e puts e.message #=>divided by 0 puts e.class #=>ZeroDivisionError end beginで囲んだ部分をrescueで捕捉します。変数eには例外オブジェクトが代入されますので、例外の情報をメソッドを用いて確認できます。 また、rescue節では指定がなければStandardErrorとそのサブクラスの例外を捕捉します。 rescue Exception => e このように例外オブジェクトを指定することで、StandardErrorのサブクラス以外すべてのエラーを捕捉す
自動でクローズされるってよく言われるけど、結局はFileオブジェクトの使い方に依る。 ブロックで開けば自動でクローズされる。 File.open ‘README.md’ do |file| puts file.read end ブロックで開いてない場合、ファイルは自分で閉じる必要があります。 file = File.open(‘without_block.txt’,’w’) file.puts ‘without_block’ file.close ブロック付きで呼び出されるとFileオブジェクトはブロックの引数として与えられ、ファイルはブロックの終了と共に自動的に閉じられます。 ブロックはeachみたいな繰り返し処理だけではなく、こういったファイルオープン・クローズに利用されます。その理由として、ブロックは準備→本質的な処理→後片付けといった前後の処理を共通化して実行することができます。例
たまには時事ネタに乗ってみます 「JALマイレージバンク」に不正ログイン、マイル盗む 数字のみパスワードの強化策は「検討していない」 パスワードは数字六桁強制で、現在は「対策する」と明言していますが、一時は、他の文字列使用を使用しての安全性向上は考慮外と言い放つところからも、なんとなーくイマイチな内部事情が透けて見えます。 もちろん、JALのシステムが全部ダメというわけじゃないのですが、数日前にJALのシステムで「えっ??うそでしょ??」って仰天なケースがあったので、今回の件は妙に納得してしまいました。 今日はその仰天ケースを紹介します。 名義変更で予約が消失? 妻は最近せっせとカード類の名義変更をしており、JALのカードもご多分に漏れず変更手続きを完了していました。 新カードも届いて、手続きは問題なく終わっているようだったのですが、妻の悲鳴が! 「予約していた座席がない!」 予約サイトか
猫も杓子もRSSリーダー RSSリーダーって「まずはこれ!」みたいな感じなので実際に作ってみます。 まずはRSSの要素を読み込んでみましょう。 RSSライブラリで読み込むよ require 'rss' rss = RSS::Parser.parse('http://somethingpg.hatenablog.com/rss') 超簡単です。 このサイトのRSSなんですが、こんな感じです。 <?xml version="1.0"?> <rss version="2.0"> <channel> <title>プログラミング的なSomething</title> <link>http://somethingpg.hatenablog.com/</link> <description>学習記録や気付いたこととか</description> <lastBuildDate>Sun, 02 Feb 2
sinatraでコード書くために基本的な処理書いた Railsチュートリアルをボツボツ読んでましたが、Ruby自体への理解のなさに嫌気がさし舵を切り直して言語限定の学習に移行、パーフェクトRubyなんかを読み進めてますが肝心のアプリが手付かずなのでいろいろ考えた結果sinatraでコード書くことにしました。 きっかけはこの記事 今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 全面同意なわけです。 Railsチュートリアルも、読んで理解できるというレベルには達するけど、アプリケーションにした場合に!どうしたら!いいの!!って心の底では思ってた。うん、sinatraだね。 基本処理 今回勉強のため書いたコードは以下です。 require 'sinatra' require 'sinatra/reloader' # リクエスト前の処理 before
オブジェクトに対してメソッドが存在するか 使うメソッドはObject#respond_to?です。 "string".respond_to?(:chomp) => true こんな感じ。 クラスに対してメソッドの存在を確認する Method#method_defined?を使います。 String.method_defined?(:chop) => true 上記の方法ではPrivateなメソッドは探せません なので、それぞれ以下のようにメソッドを書き換え(引数を入れ)てください。 respond_to? => respond_to?(:method,true) method_defined? => private_method_defined? メタプログラミングなんかするときに使ってたけどすっかり忘れてたのでメモでした。
イマイチわかってないのでbefore句のメモ before(:all)が実行されるのは最初の一回だけ。 before(:each)は各it句ごと before(:eachも:allもなし)は:eachした場合と同じでit句ごと ついでにafter句 after(:all)が実行されるのは振る舞いレベルで一回だけ。 after(:each)は各it句ごとの後処理 after(:eachも:allもなし)は:eachした場合と同じでit句ごとの後処理 どんな時に使うの たくさんユーザーを作成した場合とか、処理に負荷がかかるのでbefore句で作ったユーザーをafter句で削除したりする場合に使用します。 before(:all) { 30.times { FactoryGirl.create(:user) } } after(:all) { User.delete_all }
Validationのお作法をまとめてみました バリデーションの基本的なパターンは存在性、長さ、フォーマット、一意性の確認となります。 整理のため、これら4つの処理をRailsで行う際のお作法をまとめてみます。テストコードも最後に付記しています。 存在性の検証 Userというname、emailを持つクラスを考えてみます。 「presence: true」で存在性を確認することができます。 class User < ActiveRecord::Base attr_accessible :name, :email validates :name, presence: true end 長さの検証 同じくUserクラスで長さの検証を行います。名前が長すぎると困るので50文字に制限した処理にします。 length: { maximum: 50 }を付けることで検証が可能です。 class Use
Railsの3つの環境 Railsにはテスト環境 (test)、開発環境 (development)、そして本番環境 (production) の3つの環境がデフォルトで装備されています。 Railsのコンソールrails consoleではデフォルトで開発環境が使用されます。コンソールで環境を確認すると以下の通り、development環境であることが見て取れます。 irb(main):002:0> Rails.env => "development" irb(main):003:0> Rails.env.development? => true irb(main):004:0> Rails.env.test? => false 環境の切り替え方法 本番環境で実行する場合は以下のコマンドを打ちます rails server --environment production データベースも
今回もREXMLを利用したパース処理についてまとめていきます。 やったこと −XMLファイルの生成 −XMLファイルのコピー −XMLの要素を属性でソート 以上3点になります。 XMLファイルの生成 XML_output.rb #XMLファイルを生成するスクリプトです require 'rexml/document' out_file_name = "output.xml" doc = REXML::Document.new() #Documentを生成 doc.add(REXML::XMLDecl.new(version="1.0",encoding="SHIFT_JIS")) #DocumentにXML宣言を追加する。 root_element = REXML::Element.new("precure") #precure要素を生成 doc.add_element(root_elem
このページを最初にブックマークしてみませんか?
『プログラミング的なSomething』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く