Ruby関連のことを調べてみた2021年02月09日

Ruby関連のことを調べてみた2021年02月09日
目次

数学パズル本で出てきた初見のコードたち

# はじめに

プログラミング学習の一環として数学パズル本を解いています。

もともと数学はどちらかといえば好きなので、解決の方向性や解き方は比較的パッと思いつきます。
紙とペンさえあれば、一応ゴリ押しで解けちゃうこともあります。

が、それをコードに書き起こすとき、
**「この考え方を、どうやってコードに書けばいいの?」**
と陥ることが多々あります。

分からないまま問題の解説を読むと、知らないメソッドや演算子がたくさん出てきます。
完全に勉強不足なので、メモがてら書いていきます。

# 使っている教材

[もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問](https://books.rakuten.co.jp/rb/15291996/)

面白そうだったので購入。
全ての問題にRubyとJavaScript両方の解答コードが載っているので、自分向きでした。

ネットの評判通り、命名はあまり良くない書き方をしているのかも。(`N=oo`がよく出てきます)
まぁ恐らく自分みたいな初心者に分かりやすく書いている結果だとは思います。

# upto

“`rub

元記事を表示

【Ruby on Rails】rails newのときにrailsバージョンとデータベースを指定したい

# rails new railsのバージョン指定、DB指定
railsの新規プロジェクトを作成するときに、rails new [プロジェクト名]でアプリを作成すると思いますが、そのときにrailsのバージョンを指定したい時。

“`
$rails _6.0.3.2_ new todo-app
“`
このようにrails newの間に、railsの使いたいバージョンを追加するとできる。

### databaseをなにを使うか指定したいとき

“`
$rails _6.0.3.2_ new todo-app –database=postgresql
“`
プロジェクト名のあとに“`–database=postgresql“`このようにしてdatabase名を追加する。

元記事を表示

[未経験エンジニア]のオリジナルアプリ制作の反省5. local: trueはなぜ書くのか

# 今回書くこと
form_withに記述するlocal: trueはなぜ記述するのか

## 環境
Ruby 2.6.5
Ruby on Rails 6.0.4.3

## 結論
local: trueを記述する理由は、form_withにデフォルトで搭載されているremote: trueを打ち消し、同期通信にするため。

## form_withとは、と少し解説
form_withは、Railsのビューの拡張子としてerbを選択した時に用いる事ができる、フォームを作成するヘルパーメソッドです。ちなみに、ERB(Embedded Ruby)は、htmlやjsといった拡張子の後ろにくっつく事で、rubyのコードを実行できるファイルを生成できます。

Railsガイドによると、
> Action Viewのテンプレートはさまざまな方法で記述することができます。テンプレートの拡張子が.erbであれば、ERB (ここにRubyのコードが含まれます) とHTMLが含まれます。

とのことなので、例えば

“`index.html.erb

このファイルには、rubyのコードを実行できる

元記事を表示

[Rails]Devise で保存されたパスワードを自前で認証したい

#課題
Deviseで保存された暗号化パスワードを自前システム用に認証したい

“`irb:console
irb(main):010:0> user.encrypted_password
=> “$2a$12$vYelOHSlV8xtIfFShoZMIeWoOKVueTDeVQJtyl9JbLQilyLs5h4c.”
“`

#結論
valid_password?(‘string’) を使うと出来た。

“`irb:console
irb(main):011:0> user.valid_password?(‘password’)
=> true
“`

#参考情報
Github devise
https://github.com/heartcombo/devise/blob/master/lib/devise/models/database_authenticatable.rb

元記事を表示

[2021]Ajax(非同期通信)フォロー機能(Rails・jQuery)

##前提
– フォローボタンを実装していること
– jQueryを使用できるようにしていること

“`View.

<%= render 'relationships/follow_button', user: @user %>

“`
部分テンプレートを使用しているため
お好きなところに使用してください。

##部分テンプレート作成
“`relationships/_follow_button.thml.erb

<% if current_user.following?(user) %>
<%= link_to 'Unfollow', user_relationships_path(user.id), method: :delete, remote: true %>
 <% else %>
<%= link_to 'Follow', user_relationships_path(user.id), method: :post, remote: true %>
<% end %>
“`
– link_toを

元記事を表示

型・ポインタ・参照 覚書?

※この文章はベータ版です。

# C/C++

C/C++は、型ありき(type first)で設計されています。
型は前置です。

変数宣言時に必ず変数と型を紐付けし、変数の初期化時に型に合わせて、メモリを
確保します。

Cは、設計段階で、型をつけた変数を定義して、変数間で値をコピーして渡す「値渡し」が
先ずあり、「値渡し」だけでは常に値のコピーが発生し、パフォーマンスがでないので、値が
ある場所(アドレス)を指し、値の直接操作の可能な「ポインタ」が導入された、感じがします。

Cはポインタに独自の型(ポインタ型)を用意せず、型に対して\*を後置することでポインタ型を
表現しています。
(ポインタ変数は、アドレスの入れ物なので、ポインタ変数間で「値渡し」できます。
ポインタ変数に「\*」を付けることで、ポインタ変数に格納したアドレスにある値を直接操作
できます。)
(ポインタはアドレスの入れ物なので、ポインタ自体は格納されているアドレスにある変数の
型の情報を必要とはしていませんが、実装上、ポインタの指すアドレスにある変数の型が
わからないと、その変数内にある値にアクセスできないた

元記事を表示

【Ruby】ファイルや標準出力にログを出力したい

# ログを出力したい
Rubyでログを出力する場合は標準ライブラリの`Logger`を使用するとログ出力ができます。

## ログサンプル

“`ruby
require ‘logger’

log = Logger.new(STDOUT)

log.fatal(“fatal message”)
log.error(“error message”)
log.warn(“warning message”)
log.info(“information message”)
log.debug(“debug message”)
“`

上記を実行すると以下のようなログが出力されます。

“`
F, [2021-02-09T00:35:18.126927 #1063] FATAL — : fatal message
E, [2021-02-09T00:35:18.127010 #1063] ERROR — : error message
D, [2021-02-09T00:35:18.127024 #1063] DEBUG — : debug message
I, [2021-02

元記事を表示

[Ruby on Rails] サーバー重複時の対処法について

自身の失敗から学んだことを書いて行きます。

まず、**rails s**コマンドで**localhost:3000**を起動中に重たくなって動かなくなったって事ありませんか??

大抵が**control****+****C**を押せば直るんですけど、
その時、直らなくて焦ってターミナルを強制的に切ってしまったんです。
  

すると、新しく開いたターミナルでサーバーが開かなくなってしまいました。
原因は

サーバーが既に起動していたから

サーバーを付けたまま強制終了するとこいう事が起こるらしい。

 
その**解決方法**がこちら
 
 
先ほど新しく開いたターミナルで

lsof -i:3000
 

とコマンドを打つと![スクリーンショット 2021-02-09 0.24.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1078698/3b6b1062-ab7e-cb72-463c-da2042b288f8.png)

こんな感じで先ほど使っていたサーバーの状況を確認

元記事を表示

zipメソッドを使って複数の配列を同時に取り出す

##複数のタグを同時に表示させたかった
タグ付け機能を複数実装し、同じページに表示させようとした際に便利なメソッドを見つけたので備忘録として残しておく。

##zipメソッドの使い方
zipメソッドを使うことで、複数の配列から同時に取り出すことができる。

“`ruby
tag1 = [‘test1’, ‘test2’, ‘test3’]
tag2 = [‘テスト1’, ‘テスト2’, ‘テスト3’]

tag1.zip(tag2) do |tag1, tag2|
puts tag1
puts tag2
end
“`
上記のように記述すると以下の実行結果となる。

“`
test1
テスト1
test2
テスト2
test3
テスト3
“`

元記事を表示

Ruby、UdemyAPIを使ってUdemyの講座情報を取得してみた

# はじめに
Rubyを使って、UdemyAPIを叩き、講座情報を取得してみました。
Rubyのバージョンは2.6.5です。

# やったこと
キーワードに該当するUdemyの講座情報を取得し、その講座タイトルを出力する処理をしました。
※取得する講座情報は、日本語の講座のみに限定しました。
※[こちらの記事](https://programming-beginner-zeroichi.jp/articles/215)をとてもとても参考にさせていただきました。
※[UdemyAPIの公式ドキュメント](https://www.udemy.com/developers/affiliate/)を確認し、作成しました。

## 手順1.UdemyAPIの取得
手順は次のとおり。
①Udemyアカウントを作る。
②Udemyにログインし、アカウント設定画面に移動
③アカウント設定画面にてAPIクライアントをクリック
④APIクライアント(下記画面)にて、[AffiliateAPIクライアントをリクエストする]をクリックし、必要事項を入力し、[保存]をクリックする。
⑤リクエストが承認されると、

元記事を表示

【Rails】アプリ作成にあたって、リセットCSSに苦戦した件

MVCの概念やRubyにおける7つのアクションを学習後、
実際にアプリ作成を行ってみました!
特にサーバーサイド実装で苦戦することが多いだろうな。。と思っていた私ですが、
まさかのビューファイルのレイアウト調整で苦戦するということに。。。:scream_cat:
ということで!
今回学んだことの振り返りを記録していこうと思います!

今回、**本をテーマ**にした投稿アプリを作ってみました!

以下トップページの画像です。
[![Image from Gyazo](https://i.gyazo.com/44e0ce62abe35f2b0a3935e1bd479682.png)](https://gyazo.com/44e0ce62abe35f2b0a3935e1bd479682)

共有したい本を投稿すると、
このページにどんどんアップされていく仕様になっています♪

ここからリセットCSSにて苦戦したことを挙げていきます!

# リセットCSSの導入
※今回はYahoo! (YUI 3) Reset CSSを導入していま

元記事を表示

【エラー】ActiveRecord::StatementInvalid: Mysql2::Error:

#はじめに

エラーに苦戦したため、解消方法を忘れないように備忘録として記述します。
もし参考になれば幸いです。

# 環境

現在のバージョン:
macOS Catalina 10.15.6

環境
ruby ‘2.5.8’
ruby on rails ‘5.2.2’
docker
MySql 5.7.33

# 背景

新しくgit branchを作成後PCをシャットダウンさせて再度開発をする際にlocalhost:3000でページ確認をしたところ下記エラーが発生。
ActiveRecord::StatementInvalid: Mysql2::Error: Tablespace ‘データベース名.テーブル名’ exists.: CREATE TABLE テーブル名 (version varchar(255) NOT NULL PRIMARY KEY)

調べてみたところ何らかの原因でデータベースの情報に相違があった、壊れているなどが原因とのこと。
ターミナルで下記を実行したが同様エラーで先に進めない

“`ruby:ターミナル
$ docker-compose run

元記事を表示

ProgateのRailsで「We’re sorry, but something went wrong.If you are the application owner check the logs for more information.」が出たときの対処法

ProgateでRailsを勉強している際に、あまり見慣れないエラーメッセージに遭遇しました。
お問い合わせすることなく、解決したので記載します。

症状

エラーの内容は、
「We’re sorry, but something went wrong.If you are the application owner check the logs for more information.」

日本語だと、
「申し訳ありませんが、問題が発生しました。アプリケーションの所有者である場合は、ログで詳細を確認してください。」

スタックトレースなど出ていないため、今回コードに手を入れたところでエラー箇所を類推する必要がありました。

また、特定の画面ではなく、どの画面でもこのメッセージが出てくる模様。

ちなみに、Railsの道場コースⅢの「ログアウト機能を作ろう」で発生しました。

![progate.JPG](https://qiita-image-store.s3.ap-northea

元記事を表示

ニートがWEBサービスをリリースするまでの日記

#DAY1

自己紹介
*1999年生まれ
*プログラミング初心者
*Dの称号を持っています(DT)

元記事を表示

しょうもなすぎるミスでFactoryGirl::DuplicateDefinitionErrorしていた話。

RspecとFactoryGirlを用いたテストを実行しているときにハマったエラーがしょうもなすぎたのでここにアウトプットしていく。

## 発生したエラー

FactoryGirlを用いて定義した`user`が他で定義していなにもかかわらず、`FactoryGirl::DuplicateDefinitionError`という重複のエラーになった。

“`spec/factories/users.rb
FactoryGirl.define do
factory :user do
name { Faker::Lorem.word }
number { Faker::Number.number(10) }
end
end
“`

“`spec/requests/users_request_spec.rb
require ‘rails_helper’

RSpec.describe “Users”, type: :request do
let!(:users) { create_list(:user, 10) }
let(

元記事を表示

# Letter Book

# Letter Book

“`
現在保育士として勤務している中で、保育士の日々の業務の簡素化、
保護者と保育士間で円滑にコミュニケーションが取れないかと考え、業務の1つである
** お便り帳アプリを制作しました。 **

“`

# 動作環境

– ruby 2.6.6
– Rails 6.0.3.2
– JavaScript
– jQuery
### データベース
– PostgreSQL

# DEMO
https://letter-book.work/

![スクリーンショット 2020-08-23 23 10 37](https://user-images.githubusercontent.com/56257230/106136828-2a30a680-61ad-11eb-8dbd-03a04b66d58f.PNG)

# 工夫したところ

実際に現場の職員の話、助言をいただき使っていたただくユーザ目線を考え試行錯誤しなが作成。
具体的には、

### ◎スマホで操作できるようレスポンシブデザイン

### ◎忙しい朝の時間にボタン1クリックで登園の時間を

元記事を表示

【初級編】Modelの実装手順~Ruby on Rails~

# RailsのModelの書き方まとめ

どうもはじめまして。Tyo_Doと申します。

以前、[【完全保存版】5万円でエンジニア転職してみた。未経験から自社開発エンジニアに転職するまでのロードマップ。](https://qiita.com/Tyo_Do/items/72778ef60103a5c05d51)という記事を書かせていただき、非常に好評だったので調子に乗ってもう1本書いてみました。

本記事は、私がプログラミング学習において一番躓いたといっても過言ではない**MVC**のModelについて解説した記事です。

**少しでも数か月前の私のように躓いている方の助けになればと思います。**

また、私自身春からエンジニアとして働かせていただく身です。執筆時点ではエンジニアではないため間違えている箇所があるかもしれません。もし間違えている箇所がありましたらコメントで教えていただけると助かります。

## 対象読者

本記事の対象者は以下のような方です。

– 教科書などを見ながらRailsでアプリケーションを開発したことがある方。
– 一度MVCについて学習した方
– MVCがな

元記事を表示

Rubyのeven?メソッド

参考:
[Ruby 3.0.0 リファレンスマニュアル Integer#even?](https://docs.ruby-lang.org/ja/latest/method/Integer/i/even=3f.html)

## even?メソッドとは
偶数か奇数かを判別するメソッドです。与えられた整数が偶数であればtrue、奇数であればfalseを返します。
even?メソッドは整数(integer型)のみ判別できます。小数点がついたもの(float型)に使用すると、NoMethodErrorとなります。

“`ruby:ruby
10.even?
# => true

5.even?
# => false
“`

実際に使用してみるとこのようになります。

“`ruby:ruby

num = 2

if num.even?
puts “#{num}は偶数です”
else
puts “#{num}は奇数です”
end

# => 2は偶数です

num = 3

if num.even?
puts “#{num}は偶数です”
else
puts “#{n

元記事を表示

【form_with】text_areaの入力内容の「改行」を反映させる

#はじめに
form_withを使って送信フォームを実装し、入力内容に改行を入れても、改行は反映されない。

(簡易的なメモアプリを例とする)

“`new.html.erb
〜省略〜
<%= form_with model: @memo, local: true do |f| %>
<%= f.text_area :title, placeholder:"メモのタイトルを入力する" %>
<%= f.submit "記録する" %>
<% end %>
〜省略〜
“`

“`show.html.erb
〜省略〜
<% @memos.each do |memo| %>

  • <% memo.title%>

〜省略〜
“`
・投稿作成画面の表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052793/6c07fb10-7e06-91c3-fc4a-9e05f24a25db.png)

↓ フォーム

元記事を表示

Railsで複数行コメントアウトするときの、=begin~=endの使い方

Railsのビューファイル(ERB)のコードを複数行コメントアウトする方法が分からなかったので調べて出てきた構文を使ってみました。

複数行コメントアウトする方法についての記事はすぐに見つかったのですが、記事通りに実装してもうまくコメントアウトできずちょっと詰まったので備忘録も兼ねて記載します。

# 複数行コメントアウトする方法:=begin ~ =end

最初に目を通した記事は、「Railsドキュメント」の「[ビューについて](https://railsdoc.com/view “ビューについて”)」というページです。

このページの真ん中あたりで、=begin ~ =end の使い方が紹介されています。

“`ruby:comment_out.rb
<% =begin %>
<%= コメント %>
<% =end %>
“`

「なーんだ、簡単じゃん」と思ってすぐ自分のコードに追加したのですが、まったくコメントアウトされません、、、

“`ruby:bad_sample1.rb

サンプルページ

元記事を表示

OTHERカテゴリの最新記事