- 1. WEB開発をやり始めてみる(Ruby:Cloud9環境構築)
- 2. WEB開発をやり始めてみる(Ruby:条件分岐&メソッド)
- 3. WEB開発をやり始めてみる(Ruby:FizzBuzz)
- 4. WEB開発をやり始めてみる(Ruby:配列+いろんなメソッド)
- 5. WEB開発をやり始めてみる(Ruby:ハッシュ)
- 6. Fly.ioでデプロイする手順(Window)
- 7. 【解決済】CORS設定でOPTIONSリクエストとヘッダが取得できない
- 8. 今まで知らなかった開発で使用するメソッドをまとめてみた!
- 9. 【備忘録】【Rails】before_actionとは
- 10. インデントを減らすコマンド
- 11. HTMLの基礎知識(コメント機能で動画を投稿)
- 12. 成果物を作る為の計画
- 13. 【解決済】rails sが起動しなくなった
- 14. Rails I18n(国際化)のymlファイル内からの取り出しについて
- 15. 地理院タイルの地図を表示する
- 16. ユーザーの好みに合わせて服をおすすめするアプリを作成しました
- 17. 【解決済】Rspec WrongScopeErrorが発生
- 18. CircleCI Herokuへのデプロイ時に’No images to push’エラーが出る場合の解決方法
- 19. 【Rails】コンソール内でmigrateする方法
- 20. 【Rails】ActiveStorageはdependent: :destroyをつけなくてもよい
WEB開発をやり始めてみる(Ruby:Cloud9環境構築)
# 目的
web開発としてRubyの学習を始めてみる。
環境はCloud9で作成しています。# やったこと
“`ruby
### 環境を整えます
$ sudo yum update && sudo yum upgrade
“`
“`ruby
### バージョンを指定します(3.0.2)
$ rvm -v
rvm 1.29.8 (1.29.8) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]$ rvm get stable
Downloading https://get.rvm.io
略$ rvm install ruby-3.0.2
Searching for binary rubies, this might take some time.
略$ rvm list
* ruby-2.6.3 [ x86_64 ]
=> ruby-3.0.2 [ x86_64 ]$ rvm use 3.0.2
Using /home/ec2-user/.rvm/gems/ruby-3.0.2
WEB開発をやり始めてみる(Ruby:条件分岐&メソッド)
# 目的
Rubyの学習でまずは基礎文法のやり直し
ほとんど忘れているため、メモとして残して見直せれるように# やったこと
### if文
“`ruby:
score = 90
if score >= 90
puts”A”
elsif score >= 80
puts”B”
elsif score >= 70
puts”C”
else
puts “D”
end$ ruby hello.rb
A
“`
### case文
“`ruby:
frute = “banana”case frute
when “banana”
puts”イエロー”
when “Apple”
puts”レッド”
when “orange”
puts “オレンジ”
else
puts”それ以外”
end$ ruby case.rb
イエロ-
“`
### メソッド
“`ruby:
def cry( animal)
if animal==”cat”
“にゃー”
else
“????”
en
WEB開発をやり始めてみる(Ruby:FizzBuzz)
# やったこと
### FizzBuzz
“`ruby:
def fizz_buzz(n)
if n % 15 == 0
“FizzBuzz”
elsis n % 3 == 0
“Fizz”
elsis n % 5 == 0
“Buzz”
else
n.to_s
end
endputs(1)
puts(2)
puts(3)
puts(5)
puts(15)
“`
# まとめ
### 15が先にあるのは、仮に3が上にあると3が該当するため、15を先に入れている。
“`ruby:
def fizz_buzz(n)
if n % 15 == 0
“FizzBuzz”
“`
### n.to_sは「n」に対して数値で返すメソッド(.to_s)
“`ruby:
else
n.to_s
end
“`
WEB開発をやり始めてみる(Ruby:配列+いろんなメソッド)
# やったことメモ
配列を使ったメソッドの使い方のまとめ
“`ruby:
$ irb
#### 配列の書き方
2.5.0 :001 > a = [1, 2, 3, ‘aa’, [1, 2, 3]]
=> [1, 2, 3, “aa”, [1, 2, 3]]#### 配列の表示の仕方
2.5.0 :002 > a[0]
=> 1
2.5.0 :003 > a[1]
=> 2
2.5.0 :004 > puts a
1
2
3
aa
1
2
3
=> nil#### 配列の中身が空かどうか
2.5.0 :005 > a.empty?
=> false
2.5.0 :006 > b = []
=> []
2.5.0 :007 > b.empty?
=> true#### 配列の中身に〇〇が含まれているか
2.5.0 :008 > a.include?(‘aa’)
=> true
2.5.0 :009 > a.include?(‘b’)
=> false#### 配列の中身を逆順に表示(!を使うと破壊的メソッドといって、元の中身を書き換える)
WEB開発をやり始めてみる(Ruby:ハッシュ)
# やったこと
“`ruby:
### ハッシュの作り方
scores = {luke: 100, jack: 90, robert: 70}
puts scores
{:luke=>100, :jack=>90, :robert=>70}### eachを使った変数の代入と出力
scores.each { |k, v| puts v}
100
90
70### eachを使った変数の代入と出力
scores.each { |k, v| puts “#{k}, #{v}” }
luke, 100
jack, 90
robert, 70## if文を使った点数の指定以上だけを出力
scores.each { |k, v|
if v >= 80
puts “#{k}, #{v}”
end
}luke, 100
jack, 90scores.keys
=> [:luke, :jack, :robert]scores.values
=> [100, 90, 70]scores.has_key?(:luke)
Fly.ioでデプロイする手順(Window)
# STEP1:Gitを利用できるようにしよう
Gitを利用するためにユーザー名とemailを登録する必要があります。
以下のコマンドの”名前”と”メールアドレス”の部分を変更して、実行してください!
名前は自分の氏名のローマ字で大丈夫です。“`ruby:ターミナル
git config –global user.name “名前”
“`“`ruby:ターミナル
git config –global user.email “メールアドレス”
“`# STEP2:リリースするための準備を仕込もう
“`ruby:ターミナル
cd desktop
cd (自分のアプリのフォルダ名)
“`
## Gemfileの編集
まず、「gem ‘sqlite3’, ‘~> 1.4’」と書いてある行(9行目付近にあります)を
コメントアウトしましょう。
(これらは、自分のパソコンの中のrails app内で用いるデータベースのgemです。)#変更前
![8-2-1.png](https://qiita-image-store.s3.ap-northeast-1.
【解決済】CORS設定でOPTIONSリクエストとヘッダが取得できない
実装中に対応した内容を備忘録として投稿します。
## 発生した問題
フロントエンド(Nuxt.js)から、バックエンド(Rails)に対して、APIリクエストを投げるとCORSエラーが発生。“`
Access to XMLHttpRequest at ‘http://localhost:3000/users/1’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`## 原因
– ブラウザ側のセキュリティが強化されていて、意図しない挙動を防ぐために実装されている。
– もし仮に、ハッキングされるなどすると、
– フロントエンドとバックエンドでサーバーやドメインが別れている場合に、悪意のあるドメインにすり替えるなどができてしまう。
– 会員制サイトでログインするときに、ログインIDやパスワードを盗むことができてしまう
今まで知らなかった開発で使用するメソッドをまとめてみた!
## なぜ記事を書こうと思ったか
Railsアプリの開発をする際に適切なメソッドを調べる時がある為、今まで知らなかった開発で使用するメソッドを中心にこの記事にまとめようと思います。## railsメソッド一覧
### Regexpクラス– escapeメソッド
メタ文字をエスケープした結果を返す。“`
pattern = Regexp.escape(‘1+2=3,2*3=6’)
p pattern
# ‘1//+2=3,2//*3=6’
“`### Stringクラス
– subメソッド
文字列中で pattern にマッチした最初の部分を文字列 replace で置き換えた文字列を生成して返す。“`
greeting = “I am name. My favorite food is meet.”
pattern = { “name” => “James”, “meet” => “beef” }
replaced = article.sub(/name|meet/, pattern)p replaced # “I am James. M
【備忘録】【Rails】before_actionとは
11月からRailsを実務で使うことが決まったので、これから学習したことを備忘録に残していきます。
今日は【before_action】について。
▼ 参考にさせていただいた記事
[pikawaka 【Rails】 before_actionの使い方とオプションについて](https://pikawaka.com/rails/before_action)# before_actionとは
コントローラの各アクションが実行される前に、何らかの処理を行いたい時に使用するもの。
フィルタの一つ。フィルタとは、コントローラにあるアクションの直前や直後、または直前と直後の両方に実行されるメソッドのことをいい、Railsには様々なフィルタが用意されている。“`rails:before_actionの使用例
class UsersController < ApplicationController before_action :メソッド名 end ``` これをコントローラーファイルの上部に記述しておくことで、コントローラーのアクションが動く前にメソッドが実行されて、そのあとでア
インデントを減らすコマンド
# はじめに
余計につけてしまったインデントを減らす方法を記録します。## 対処法
shift + tab キーでインデントを減らすことができます。
HTMLの基礎知識(コメント機能で動画を投稿)
みなさんこんにちは!!
今回はYouTude投稿とコメント機能の応用した機能になります!!**STEP1:モデルを作成しよう!**
“`ruby:ターミナル
rails g model Youtubecomment content:string user:references register:references
rails generate migration AddYoutubeUrlToRegisters youtube_url:string
rails db:migrate
“`**Step4: helperにメソッドの定義**
“`ruby:helpers/registersHelper
module RegistersHelper
def find_youtube_url(youtube_url)
if youtube_url[0..16] == “https://youtu.be/”
return youtube_url[17..27]
# “https://youtu.be/WGiUk8VakxQ” 11桁の
成果物を作る為の計画
## 成果物を作る為の下準備
### 自問自答
– Q, どの様な成果物を作りたいのか?
A, 自分の経歴や自己紹介、現状のスキルなどを
テキストや動画を使って説明出来るアプリの作成したい– Q, どの様な言語で?なぜその言語なのか?
A, 言語はRubyでフレームワークはRubyと相性の良いRuby on Railsを
使おうと思います.プログラミングスクールの課題でRubyを扱っていて
多少の知識はあるのでRubyをある程度マスターしてから他の言語も学習
していきたいと思っています。
– Q, なぜRubyで成果物を作る必要があるのか?A, プログラミングスクールではRubyの基礎の知識とどの様に進めていけば
作りたいものが作れるかのプロセスを学んだので今回は自分で全て考えてタスクを
言語化+細分化し作成することでRubyの言語を理解出来ている事を証明し転職活動時
のポートフォリオとして使いたい– Q,どの様な順序で進めていけば効率良く作業できるか?
【解決済】rails sが起動しなくなった
`rails s`が動かない現象に遭遇したので、備忘録として投稿します。
## 発生した問題
下記エラーにより、`rails s`が起動しなくなった。
“`
% rails s
=> Booting Puma
=> Rails 6.1.5 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
bin/rails:7: warning: already initialized constant APP_PATH
/Users/xxxx/workspace/app/bin/rails:7: warning: previous definition of APP_PATH was here
The most common rails commands are:
generate Generate new code (short-cut alias: “g”)
console Start the Rails conso
Rails I18n(国際化)のymlファイル内からの取り出しについて
## Rails I18n について理解したことをまとめます。
### 今回行いたかったこと
– I18nを利用して、Railsのviewファイル内の翻訳## I18n導入について
– まず、I18nを導入する際に、config/application.rb内に以下のコードを追加します。“`
config.i18n.load_path += Dir[Rails.root.join(‘config/locales/**/*.{rb,yml}’)]
config.i18n.default_locale = :ja
“`## ymlファイルの作成
– 次にconfig/locales内に、ja.ymlファイルを作成します。
– 自分の場合は、view用にja.ymlを分割したかったので、config/locales/view/モデル名/ja.ymlとしました。
– 作成が完了しましたら、ja.yml内に翻訳したい言葉と翻訳後の言葉を記載していきます。“`
ja:
defaults:
Tasks Index: ‘タスク一覧’
New Task: ‘タス
地理院タイルの地図を表示する
今回は[国土地理院](https://www.gsi.go.jp/)が公開している地理院タイルを使ってRubyで地図アプリを作ってみます。
地理院タイルの仕様は「[地理院タイルについて](https://maps.gsi.go.jp/development/siyou.html
)」を参考にします。
ざっくり言うとこんな感じになっています。
>https://cyberjapandata.gsi.go.jp/xyz/{t}/{z}/{x}/{y}.{ext}
>{t}:データID
>{x}:タイル座標のX値
>{y}:タイル座標のY値
>{z}:ズームレベル
>{ext}:拡張子# Step1 タイル画像を表示してみる
まずは、[標準地図](https://maps.gsi.go.jp/development/ichiran.html#std)から一つだけダウンロードして表示してみます。
“` ruby:sample1.rb
require ‘open-uri’
require ‘dxruby’url = “http://cyberjapandata.gsi.go.jp
ユーザーの好みに合わせて服をおすすめするアプリを作成しました
未経験からのWeb系エンジニア転職を目指し、ポートフォリオサイトをRuby on Railsで作成しました。
## アプリケーション
アプリケーション:[「PICK OUT」](https://warm-stream-98443.herokuapp.com/)
※Herokuで動かしているので最初のページの表示に時間がかかる場合があります
ソースコード:https://github.com/bellmmm/original_rails_app## アプリケーション概要
アカウントを作成したユーザーに対し、テストを通してユーザーの服の好みを判断し、ユーザーの好みに合わせて洋服をおすすめするアプリケーションです。## 目的
自分の好きな服、似合う服をはっきりと認識している人は少ないと思います。私もECサイトで服を購入したり店舗で試着をしてみて、しっくりこないと感じたことが多くあります。そこで、人はそれぞれ好まない要素が無意識にあると仮定しました。このWebアプリでは、ユーザーがしっくりこない服をいくつか選ぶことで好まない要素を想定し、それを持たない服をおすすめ商品と
【解決済】Rspec WrongScopeErrorが発生
Rspecでテストを走らせた際に発生した問題について、備忘録として投稿します。
## 発生した問題
“`ruby:ターミナル
Failure/Error:
raise WrongScopeError,
“`#{name}` is not available from within an example (e.g. an ” \
“`it` block) or from constructs that run in the scope of an ” \
“example (e.g. `before`, `let`, etc). It is only available ” \
“on an example group (e.g. a `describe` or `context` block).”`name` is not available from within an example (e.g. an `it` block) or from
CircleCI Herokuへのデプロイ時に’No images to push’エラーが出る場合の解決方法
# 概要
CircleCIでHerokuへのデプロイを実行した際、イメージが見つからないというエラーが発生した。
解決方法についてメモ。
“`bash:エラー内容抜粋
#!/bin/bash -eo pipefail
heroku container:push web -a $HEROKU_APP_NAME
▸ No images to pushExited with code exit status 1
CircleCI received exit code 1
“`
# 環境
ruby 3.0.2
rails 6.1.4
rspec-rails 5.1.2
CircleCI 2.1# 先に結論
デプロイ対象ディレクトリにDockerfileが含まれるようにする。“`yml:.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.4.0
browser-tools: circleci/browser-tools@1.4.0
heroku: circleci/heroku@1.2
【Rails】コンソール内でmigrateする方法
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## コンソール内でmigrateする方法
コンソールでUserを作成しようとした際にエラーでできず、最終的にコンソール内でmigrateするのに時間がかかったので備忘録にする。“`
> User.create(name: “山田次郎”)
=> ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation “users” does not exist)> User
=> User(Table doesn’t exist)> rails db:migrate
=> NameError (undefined local variable or method `migrate’ for main:Object)
“`“`
> class CreateUsers < ActiveRecord::Migration[6.0] > def change
> create_table :user d
【Rails】ActiveStorageはdependent: :destroyをつけなくてもよい
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## has_one_attachedにオプションは不要
“`app/models/user.rb
has_one_attached :avatar
“`> If the :dependent option isn’t set, the attachment will be purged (i.e. destroyed) whenever the record is destroyed.
“`ruby
has_one_attached :avatar, dependent: :destroy
“`
のようにオプションつけなくても、親モデルが削除されたら付随するavatarも削除してくれる!https://api.rubyonrails.org/v6.0/classes/ActiveStorage/Attached/Model.html#method-i-has_one_attached