Ruby

ruby rbenv global バージョンが変わらない

Rubyのバージョン管理をする機能であるrbenvですが、ローカル環境のバージョン変更をしようとして $ rbenv global 2.5.1 $ ruby -v ってやったらバージョンが切り替わらない。悲しみ。 調べてみると $ rbenv version system 2.5.1* 2.6.3(set by /Users/あな…

puts でまとめて出力しよう

Rubyの出力メソッドのひとつ”puts” よく見ます。 複数の値を出力する時、putsを複数行にわたって書いていませんか?私はそうでした。 array = ["a","b","c"] puts array puts "\n" puts 1+1 => a b c => => 2 もうそんなことはやめにしましょう。 array = ["…

配列とは [ ]いらないのかもしれない

Rubyの配列の概念を疑うようなことがあったので備忘録 普通の配列の記述は array = [ "a", "b", "c" ] のように書きますよね。 ところがです。この大括弧で囲まなくても配列として認識されるみたいなんです。 array = "hoge", "gefu", "mofu" puts array[1] …

'シングルクオーテーション' VS "ダブルクオーテーション"

Rubyの文字列を作るときのおはなし。みなさんはシングルとダブルどちらのクオーテーションを使っているでしょうか。 私もよくわからなくなるので、ここいらでしっかり意味合いを考えて使い分けできるようになっておこうと思うます。 まずそれぞれの仕様の違…

破壊的なメソッド! 真偽値なメソッド?

Rubyのメソッドに「!」や「?」がつくメソッドがある。愉快だなって思っていたけれど、ちゃんときちんとしっかり意味があるので、まとめておく。 ●破壊的メソッド(!) 大元のオブジェクトの値を変更してしまう。メソッドは変数とかに一時的に演算処理を施…

ruby のバージョンを変えたら bundle install できなくなった

ruby2.3.1を使っていたので2.5.1にしました。それから開発中のディレクトリでbundle installをしたら、 「 rbenv: rails: command not found The `bundle install' command exists in these Ruby versions: 2.3.1 」 と言われてしまいました。 「ウチじゃ"bu…

migrationファイル --NO FILE-- を解決する

RailsでDBに変更を加える際に、マイグレーションファイルを作ってカラムの追加なりをする。 しかし、マイグレーションファイルの作成とか編集に失敗したからと言って、手動でファイルを削除すればそれが反映されるわけではない。きちんとターミナルでコマン…

form_for って難しい

form_forはRailsの入力フォームを作るときにお世話になるアイツ。 なんか自動で色々やってくれるから簡単にDBに保存できるようになるんだけれど、その自動な部分がよくわかってなくて説明を求められた時に困った。そして間違ったことを言ってしまったので、…

鳴かぬなら killしてしまおう rails s

rails s が途中でフリーズしてうんともすんとも言わなくなった。これはまさに鳴かないホトトギスも同然! 信長「鳴かぬなら killしてしまえ rails s」 殿の命令が下ったので、さっそくやっていきたいと思います。 ●PIDを調べる rails s が動いているProcess …

rbenvのPATHがおかしくてターミナルが…

ターミナルにこのようなエラー文が表示される export PATH="/Users/xxxx/.rbenv/shims:${PATH}" export PATH="$HOME/.rbenv/bin:$PATH" source '/usr/local/Cellar/rbenv/1.1.1/libexec/../completions/rbenv.bash' command rbenv rehash 2>/dev/null rbenv(…

.to_i メソッドは0に帰す

Rubyのプログラムを作っていて、gets.to_i を使ってみて見つけたこと。 while true do puts "[0]レビューを書く" puts "[1]レビューを読む" puts "[2]アプリを終了する" input = gets.to_i if input == 0 then posts = post_review(posts) elsif input == 1 …

入れ子構造なハッシュ

ハッシュが複層的に入れ子構造になっていると嫌な感じである。 例えば user_data = [ { user: { profile: { name: 'Taro' } } }, { user: { profile: { name: 'Jiro' } } }, { user: { profile: { name: 'Saburo' } } } ] 配列の中にuserキーのハッシュがあ…

Symbol型とは

Rubyのオブジェクトにシンボル型オブジェクトがある。「:」をつけるやつだ。 これがキー名の指定とかでよく使う。このシンボル型とは何かを自分のものとするためにまとめる。 オブジェクトには型がある。文字列オブジェクトはString型。数字オブジェクトはI…

ヘルパーメソッドをつくろう

Railsにはもともと搭載されているメソッドがある。そのなかにヘルパーメソッドというものがある。 link_to form_tag / form_for / form_with image_tag など、よくお世話になる便利機能である。 ヘルパーメソッドはViewで活用されるものであり、htmlタグの要…

ゲッター・セッター のself

Rubyでメソッド定義していて、self.がつくときがあります。テキトーにやり過ごしていたので、この前「これなんですか?」と質問されてごにょごにょしてしまった。なので調べて備忘録。 self.はクラスメソッドにもつくのですが、今回はそれではなく、セッター…

VScode のコメントアウト(erb)改造したい

最近SublimeTextからVScodeにテキストエディタを変えようとしています。 私はRubyとRailsを主に使っているのですが、.erbファイルをVScodeで書いているときに、コメントアウトが使いづらい。 というのも、erbのコメントアウト・ショートカットキーでは<%# ~ …

do って何?

RubyやRailsでコードを書いていると、eachやwhileなどの繰り返し処理などで array = [1, 2, 3, 4] array.each do |num| p num end みたいなものをよく見る このdoはお約束でつけるものだろうけれど、「正式にはなんていうの?」という質問をこのあいだされて…

(Rails) コントローラーとモデルに書くメソッドの違いって??

RailsでWebサイト的なものを個人で作っていると、コントローラーにはアクション定義して、変数を書いたり、メソッド定義したりするんだけれど、モデルクラスにはあまり書き込まない。 これは素人考えなのだろうけれど、モデルクラス使わなくない? これはき…

resourcesにルーティングを足す

Railsのルーティングの設定にはresourcesという主要7アクションのセットがある。でもそれにルーティングを加えたい時がある。そんな時は、collectionかmemberを書く。 routes.rb resources :items do collection do post :confirm post :review end member …

管理画面と公開画面 namespaceの使いどき

Webアプリケーションの開発では管理画面と公開画面を分けてRoutingを定義して、controllerを作ってアクションを定義していくことがある。そうしないと、例えば同じitems_controller.rbに多くのアクションが定義されて読みづらくなるし、どれが管理画面用アク…

Dateクラス と Timeクラス

Rubyには日付や日時を呼び出すことのできるクラスが備え付けられている。 ●Dateクラス require 'date' puts date = Date.today => 2019-5-10 puts date.year => 2019 puts date.month => 5 puts date.wday => 5(日曜を0とした曜日の番号) puts date = Dat…

Ruby 繰り返し処理の違い

●for文 指定したオブジェクトの範囲だけ繰り返し取得する。配列の中身を取り出すのを繰り返して全て取得する。 for num in 1..5 do puts num end とすれば1〜5が表示される。 ●while文 指定した条件式がtrueである限り処理を繰り返す。条件式の指定がfor …

1,000で桁を区切る方法

Numeric#to_s.(:delimited)を使う。 例えば、入力した金額に区切りをつけるメソッドを作る。 module ProductsHelper def converting_to_jpy(price) "#{price.to_s(:delimited, delimiter: ',')}円" end end このように記述し、()内のdelimiter:',' で区切…

ぼっち演算子 &

プログラミングの勉強中は全然アウトプットできなかった。甘えです。 しかし、なんと今度プログラミングを教える側になれました。通っていたスクールのメンターで、基本的な内容のアドバイスだけなので、高度な知識はまだいらないのですが…。でも教えるから…