- 1. HTMLの基礎知識(コメント機能で動画を投稿)
- 2. 成果物を作る為の計画
- 3. 【解決済】rails sが起動しなくなった
- 4. Rails I18n(国際化)のymlファイル内からの取り出しについて
- 5. 地理院タイルの地図を表示する
- 6. ユーザーの好みに合わせて服をおすすめするアプリを作成しました
- 7. 【解決済】Rspec WrongScopeErrorが発生
- 8. CircleCI Herokuへのデプロイ時に’No images to push’エラーが出る場合の解決方法
- 9. 【Rails】コンソール内でmigrateする方法
- 10. 【Rails】ActiveStorageはdependent: :destroyをつけなくてもよい
- 11. ActionController::InvalidAuthenticityTokenの対処方法
- 12. 【RSpec】データ作成で使える小技
- 13. Rubyについての記事
- 14. RSpec(Ruby on Railsのテストコードを書くために用いられるGem)の導入
- 15. ユーザー管理機能(devise)の導入
- 16. インスタンス変数を用いて処理を効率化する
- 17. Wikipedia データをスクレイピングする
- 18. 【Ruby】ネストしたHashをselectメソッドを使って検索する方法
- 19. Python,Ruby,PHP,Java,JavaScript,Perlのソケット通信の比較
- 20. 【解決済】RailsのHostAuthorizationによってELBのヘルスチェックがhealthyにならない
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
ActionController::InvalidAuthenticityTokenの対処方法
# 環境
Rails 6.1.6.1
ruby 2.6.8
OS WSL2(Ubuntu 20.04.2 LTS)# APIを使用したPOSTの際にエラーが起こる
### エラー文
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294147/973e9c1f-9077-c629-0d11-0082f8e4334c.png)“`
ActionController::InvalidAuthenticityToken in Users::XXXXController#create
ActionController::InvalidAuthenticityToken
“`## 原因
CSRF対策のトークンが無いことが原因のようです。
※CSRF:クロスサイトリクエストフォージェリ## 対処方法
protect_from_forgeryをcontrollerに追記することで解決
“`
class Users::XXXXController < ApplicationCont
【RSpec】データ作成で使える小技
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## テストデータの作成で使える小技
### before
“`ruby
let(:cancel_applicatoions) { create_list(:cancel_applicatoion, 30) }
cancel_applicatoions.each do |cancel_applicatoion|
create(:cancel_applicatoion_status, cancel_application: cancel_applicatoion)
end
“`### after
“`create_list“`で作成したデータをeachのようにループできる。
“`ruby
create_list(:cancel_applicatoion, 30) do |cancel_applicatoion|
create(:cancel_applicatoion_status, cancel_application: cancel_applicatoion)
en
Rubyについての記事
# Rubyとは
Ruby(ルビー)は、まつもとゆきひろ氏により開発されたオブジェクト指向スクリプト言語。
RSpec(Ruby on Railsのテストコードを書くために用いられるGem)の導入
# はじめに
RSpec導入の流れを忘れないために記録に残す。# RSpec導入の流れ
## 1.Gemの導入
# Gemfile内
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’ ⇦この行を追記
end% bundle install
## 2.RSpecの設定
% rails g rspec:install<ターミナルで以下が表示されれば問題ない>
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helpe
ユーザー管理機能(devise)の導入
# はじめに
deviseを用いたユーザー登録機能の実装順序を忘れないように記録に残す。# devise導入の流れ
## 1.deviseの導入
下記コードの追記と、コマンドの実行1.gemfileに追記
gem ‘devise’
2.gemインストールのコマンド実行
% bundle install## 2.deviseの設定に関するファイルの導入
% rails g devise:install#以下のようなlogが出れば成功
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================Depending on your application’s configuration some manual setu
インスタンス変数を用いて処理を効率化する
ログイン機能のアプリ作った際に、app/helpers/sessions_helper.rb
ファイルに以下のメソッドを定義しました。
“`
module SessionsHelper
def current_user
@current_user ||@current_user = User.find_by(id: session[:user_id])
enddef logged_in?
current_user.present?
end
end
“`
メソッドが呼び出されているviewファイル(app/views/layouts/application.html.erb)
“`
<% if logged_in? %>
<%= link_to "Profile", user_path(current_user.id) %>
<%= link_to "Logout", session_path(current_user.id), method: :delete %>
<% else %>
<%= link_t
Wikipedia データをスクレイピングする
# 前提
– [Gem](https://github.com/kenpratt/wikipedia-client) の使い方について
– ruby 2.7.4p191
– wikipedia-client (1.15.0)# サマリー
– Gem の機能
– 指定されたタイトルのページ情報を取得する
– [Wikipedia データ取得用の API](https://www.mediawiki.org/wiki/API:Main_page) の結果を返す
– ページ情報の IF がいくつか用意されている
– タイトル、サマリー、テキスト全体、、
– 特定項目の内容を取得したい場合は、自前で抽出する必要がある
– 例. テキスト全体から正規表現で抽出
– 標準 IF にない情報は、生データ取得 IF から別途取得すれば良い# 使い方
“`ruby
require ‘wikipedia’# ローカル設定を行う
wikipedia_client = Wikipedia::Client.new(Wikipe
【Ruby】ネストしたHashをselectメソッドを使って検索する方法
## 今回行いたいこと
“`
@drinks{:cola=>{:price=>120, :stock=>5},:redbull=>{:price=>200, :stock=>5},:water=>{:price=>100, :stock=>5}}
@slot_money = gets.to_i
“`
– 上記のHashの:priceの値と@slot_moneyを比較し、購入可能なドリンクのみを入れたリストを作りたい。また、在庫がある商品のみをリストに表示する。## 実装条件をもとに考えたこと
– リストを作りたいので、リストを返すメソッドを使用する。
– 比較しなければいけないので、Hashの中身を検索できるメソッドを使用する必要がありそう。
=>find, find_all, selectなど…?## とりあえず、selectが条件に合いそうなので実験してみる。
selectメソッドについて
> select -> Enumerator[permalink][rdoc][edit]
select {|key, value| … } -> Hash
filter ->
Python,Ruby,PHP,Java,JavaScript,Perlのソケット通信の比較
Python,Ruby,PHP,Java,JavaScript,Perlのソケット通信の比較
# Python
https://qiita.com/nadechin/items/28fc8970d93dbf16e81b
# Ruby
https://qiita.com/kudojp/items/d416d4c97f9d0512c088
# PHP
https://qiita.com/shiba0410/items/3102592350039bc1a7b9
# Java
https://qiita.com/Hyman1993/items/a3aaabbb2e83580d68d2
# JavaScript
https://qiita.com/take4eng/items/d0b009c48ee8c3fe420a
# Perl
https://perlzemi.com/blog/200
【解決済】RailsのHostAuthorizationによってELBのヘルスチェックがhealthyにならない
ポートフォリオをデプロイする際に発生した問題について、備忘録として投稿します。
## 発生した問題
Rails6 + AWSで下記の構成のようなアプリを開発していました。![インフラ構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2263192/32b8dab2-46ef-7f69-a8c9-85d4cd39d76d.png)
Railsの`HostAuthorization`を利用し、`/api/health_check`というパスでALBからのヘルスチェックを行おうとしました。
しかし、Railsが`403エラー`を返し、ヘルスチェックが失敗してしまいました。## 原因
Railsの設定は下記のようになっていました。“`environments/production.rb
config.hosts << 'base_domain.com' ``` 原因は、 **「ヘルスチェック時のホスト名が`base_domain.com`でないからエラーになっていた」** というもので