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

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

Rails × Vue.jsでカルーセルを実装

https://ssense.github.io/vue-carousel/
カルーセルとはこんな感じ。

これを実装していく。
トップページのログインページにこれを表示させたいので、

#自作vueコンポーネントをerbに表示させる

“`erb

<%= image_tag 'coffee_gif.gif' ,class: "coffee-gif"%>

Von Voyage!

Coffee Passportとはあなたが出会ったコーヒーの記録を共有できるサービスです

生粋のキャンプ好きが、キャンプ場検索に特化したサービス【TO_CAMP】を開発&リリースしました。(Rails/Docker/CircleCI/Heroku)

##はじめに

– **この記事はポートフォリオとして開発した、キャンプ場検索サービス「TO_CAMP」の紹介記事です。**

また、「TO_CAMP」という名前は、これからキャンプ場を探して「キャンプへ(行く)」という意味を込めて名付けました。

スクリーンショット 2021-08-26 9 32 58

出典:Google翻訳
https://translate.google.com/?hl=ja&tab=TT

##目次
[1.自己紹介](#1-自己紹介)
[2.TO_CAMPとは](#2-TO_CAMPとは)
[3.アプリの特徴](#3-アプリの特徴)
[4.機能一覧](#4-機能一覧)
[5.使用技術](#5-使用技術)
[6.テストフレームワーク](#6-テストフレームワーク)
[7.DB設計](#7-DB設計)

元記事を表示

【Rails】エラーメッセージ日本語化(メモ)

# 目標
###エラーメッセージ日本語化

この英語のメッセージを日本語に変える。
![スクリーンショット 2021-09-03 4.42.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927584/5570947e-a0f5-2536-4f55-d7176c65849a.png)

#実装
まず`gemfile`に`rails-i18n`を記述してインストールする。

“`ruby:Gemfile
gem ‘rails-i18n’
“`

`bundle install`します。

“`ruby:ターミナル
$ bundle install
“`

`config/application.rb`ファイルに`config.i18n.default_locale = :jack_o_lantern:`を記述します。

“`ruby:config/application.rb
config.i18n.default_locale = :jack_o_lantern:
“`

ローカル

元記事を表示

Rails tutorial 第6版 第4章学習メモ

####第4章
##Rails風味のRuby

###動機###
まずはトピックブランチを作り、そこで変更をコミットしていく。
`$ git checkout -b rails-flavored-ruby`

###組み込みヘルパー###

######リスト4.1:サンプルアプリケーションのレイアウト######

“`ruby:app/views/layouts/application.html.erb



<%= yield(:title) %> | Ruby on Rails Tutorial Sample App
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%=

元記事を表示

[Ajax]いいね機能を非同期にした

# はじめに
本記事では、非同期通信についてを記述します。
本日実装しました。

## 前提
いいね機能は同期通信で実装しています。

また、オリジナルアプリ開発途中で不要なコードが多いので、
`省略は多め`ですが、該当箇所は記載します。

# いいね機能
### ビュー
いいねを表示しているビュー`index.html.erb`

`

元記事を表示

[Ruby] AtCoder過去問 B – Break Number

##はじめに
AtCoderのB問題を解いて見ました。

この問題は初学者の私からすると、非常に数学力というのでしょうか、経験不足というのでしょうか、頭の柔らかさと言うのでしょうか、、、

そのような力が必要だなと痛感した一問でした。
それではよろしくお願いします!

問題は以下から確認してください↓

https://atcoder.jp/contests/abc068/tasks/abc068_b

## B – Break Number
はじめに入力受け取りです。

“`ruby
n = gets.to_i
“`

ここからは本当に法則を見つけてそれをプログラムで組めるかです。
まずはじめに私が思いついたのは愚直に、入力された数字に2で割り切れるか調べて、割り切れたら何回割り切れるかプログラムを組んで、、、配列も使って、、、

みたいな感じでやってました。
するとかなり複雑ですし、途中で断念しました。

次にある法則を見つけました。
答えは全て1に2をかけていった数字であると言うこと。

Nには1~100しか入らないと言うことなので、答えは“`2, 4, 8, 16, 3

元記事を表示

Ruby ハッシュの基本

#ハッシュとは
例えば5教科の平均点を求めたい時 下のように配列を使う。
scores = [90,80,50,60,70]
puts (scores[0] + scores[1] + scores[2] + scores[3] + scores[4])/5

***配列だけだと何の平均点かわかりづらい***
そこで***何を求めているのか何をやりたいのかをわかりやすくしたのがハッシュ***です。
別名***連想配列***と言います。

#ハッシュの使い方(文字列)
ハッシュを使って5教科の平均点を見てみましょ。

“`rb
scores = {“japanese” => 80, “english” => 80, “science” => 50, “history” => 60, “math” => 70}

puts (scores[“japanese”] + scores[“english”] + scores[“science”] + scores[“history”] + scores[“math”])/5
“`
出力すると

“`
68
“`
このように変数

元記事を表示

[Rails]状況によって使い分けるRollback

##いつ使うの?
-作成途中にカラム不足や追加など気がついてもう一度、テーブルを再編集したいとき

##どんなのあるの?
ーテーブルが少ないときに、一個ずつ編集状態にするrollback方法
ーテーブルが多いときに、一気に編集状態にするrollback方法

##(1)まずはUPとDOWN状態の確認方法
下記のコマンドをターミナルに記入。

“`
rails db:migrate:status
“`
####・結果例・
-UP状態のDBは保存している状態。migrationファイルの編集をしても設定できない。
-DOWN状態のDBは編集可能状態。migrationファイルを編集し更新すると編集ができる。
![status sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102030/e8116354-4afe-3317-e232-f10375d98376.png)

##(2-1)DOWN状態にする方法の記入欄(少ないときにおすすめ)
下記のコマンドをターミナルに記入。

“`

元記事を表示

インスタンス変数

インスタンス変数とは、クラスのオブジェクト(インスタンス)が持つ変数の1つである。

元記事を表示

HTTPメソッドとHTTPリクエスト

学習中のメモです。
HTTP(Hypertext Transfer Protocol)は、通信規約(プロトコル)の一種で、ユーザーが行いたい処理をサーバーに伝える役割をしている。
HTTPリクエストとは、ユーザーが行いたい処理をサーバーに伝えることである。

元記事を表示

真:Sorceryで複数モデルを扱う

ユーザと管理者で Model をわけたいと考えて以下の記事を参考にしました。

https://qiita.com/mzmt/items/cbc2e4f2a51ded97db83

`current_user`をオーバーライドしても、`login`などは適切に動きません。

ログを見ると `config` で指定していた `user_class`でログイン処理が走ります。

ソースコードを追っかけてみると・・・

“`ruby:sorcery-0.16.1/lib/sorcery/controller.rb

module Sorcery
module Controller

module InstanceMethods

# Takes credentials and returns a user on successful authentication.
# Runs hooks after login or failed login.
def login(*credentials)
@current_user =

元記事を表示

プロフィールにタグを表示する

現在投稿系のアプリを作成してまして、その時にプロフィール画面のデザインで結構悩みました
結果としてはあまり欲張りすぎずにシンプルなデザインにすることで見やすいし、実装もし易くなりました。

欲張っていろいろ詰め込んでも見にくいだけですしね笑

それでも完全に手抜きで作るのではなくて自分なりにあったらいいなと思うのを探してみました。

    ・ユーザーアイコン
    ・ニックネーム
    ・自己紹介文
    ・好きなものを#で表示
    ・編集

正直これくらいしか思いつかなかったです、、、、笑

実装していきます

#の機能以外はそこまで苦戦しなかったのでコード貼っておきます

使っているgemです

  • ・devise(userのログインとか新規登録とかめっちゃ簡単にできます)
  • ・carrierwave(画像のupするので使いました)
  • ・mini_magi
  • 元記事を表示

    [Rails]フォローしたユーザーの直近1週間の投稿のみ表示させる

    # はじめに
    本日は、過去にフォロー機能を実装していたので、
    せっかくなので、アプリケーションっぽくトップページには、
    フォローしているユーザーのみの投稿を表示させるようにしました。

    # コード
    コントローラー

    “`ruby
    def index
    @foods = Food.order(“created_at DESC”).where(user_id: [current_user.id,*current_user.following_ids])
    @like = Like.new
    @ranks = Food.find(Like.group(:food_id).order(‘count(food_id) desc’).limit(5).pluck(:food_id))
    end
    “`

    ビューは特に見せるところはないので割愛します。
    eachメソッド使ってとりあえずまずは全部の投稿を出すようにすれば良いと思います。

    `order(“created_at DESC”)`
    新しい投稿が上になるように設定。

    `where(user_id: [current

    元記事を表示

    [コーディングスキル] アウトプット用メモ

    # 用途

    コーディングスキルを磨くために、随時用語を纏め内容を理解するのが目的です。

    ※アルファベット、50音順に纏めていきます。

    # 変更履歴

    9/2 sortメソッド

    # sortメソッド
    配列に対してsortメソッドを使用すると中身を順々に並び替えが可能。

    “`
    array = [1, 4, 3, 2]
    array.sort
    => [1, 2, 3, 4]
    “`

    reverseメソッドを組み合わせれば降順も可能!

    “`
    array.sort.reverse
    => [4, 3, 2, 1]
    “`
    また、文字列にも使用可能:point_up:

    “`
    array = [ “e”, “b”, “a”, “d”,”c”]
    array.sort
    => [“a”, “b”, “c”, “d”, “e”]
    “`

    # 除数
    除法(割り算)で、割るほうの数。

    # 被除数

    除法(割り算)で、割られるほうの数。

    # フィボナッチ数列

    フィボナッチ数列は、「2つ前の項と1つ前の項を足し合わせていくことでできる数列」
    プログラミング言語の実装では、再帰的処理の例として

    元記事を表示

    Ruby puts print pの違い

    Rubyで出力する時に使うputs p  printの違いをそれぞれ見ていきましょう。

    #putsの特徴

    1 改行する
    2 配列では要素の順番に出力する
    3 戻り値はnil
    4 一般ユーザーが使う
    5 呼び出すメソッドはto_sによって文字列に変換

    “`rb

    “`

    #printの特徴

    1 改行しない
    2 戻り値はnil
    3 呼び出すメソッドはto_sによって文字列に変換
    4 一般ユーザーが使う

    #pの特徴

    1 改行する
    2 戻り値は引数で配列で返す
    3 オブジェクトの情報をわかりやすく出力
    4 デバック用(開発者用)に使う
    5 呼び出すメソッドはinspectによって文字列に変換

    #それぞれの違いのまとめ
    それぞれ違いがありますが特にputsとpがわかりづらいかと思います。

    下の参考記事からの引用します。
    printは、“`引数を文字列にして出力し、改行をいれません。“`
    putsは、“`引数を文字列にして出力し、改行をいれます。“`
    pは、“`引数を読み取りやすい形式で出力し、改行をいれ、デバッグでよく使用します。“`

    上の3つを押さえ

    元記事を表示

    WebpackerでHotReloadは動くが、コンパイル結果が反映されない

    # はじめに

    最近は仕事でWebアプリケーションを作成しています。
    本日もいつも通りWebページを作成し、Javascriptを書いたのですが、なぜかリロードしてもJavascriptが反応しませんでした。
    色々調べたのですが、同じ現象の方がいなかったようなので、簡単にメモしていきます。

    また、この解決に会社の上司の方が手助けをしてくれました。
    タイトルも上司の方につけていただきました。

    # 環境

    – Docker Desktop for Windows
    – WSL2
    – VSCode

    # 問題
    Docker(WSL2)環境で以下の問題がいきなり発生しました。

    ローカルとコンテナをマウントしている状態で、JavaScriptのファイルを編集しましたが、なぜか反映さません。

    JavaScriptは`webpacker`のコンテナをDockerで立ち上げて管理しています。
    JavaScriptを編集した後に保存(Ctrl+s)をすると、ホットリロードが働いていることはターミナルから確認ができます。

    そして、ターミナルではCompling….と走っていました。

    しかし、

    元記事を表示

    [Ruby] AtCoder過去問 B – Card Game for Two

    ##はじめに
    AtCoderのB問題をRubyで解いて見ました。
    いろんな考え方や書き方が自分の中でもたくさんあって、どの書き方を記事にしようか迷いましたが、一番自分がわかりやすいコードを載せることにしました!

    よろしくお願いします。

    問題は以下から確認してください。

    https://atcoder.jp/contests/abc088/tasks/abc088_b

    ## B – Card Game for Two

    まずは入力受け取りの記述を書きます。

    “`ruby
    n = gets.to_i
    points = gets.split.map(&:to_i)
    “`

    続きまして、2行目で受け取った配列の順番を後々、処理がしやすいように降順に並べ替えます。
    sort.reverseを使います。この使い方は以前記事にしていますのでそちらも見ていただければと思います。↓

    https://qiita.com/minhee/items/c5897831ed718ee6011b

    こちら、破壊的メソッドではないのでもう一度pointsに入れ直すような書き方をしておきます。
    これで

    元記事を表示

    【Rails】投稿カテゴリ機能(メモ)

    # 目標
    * カテゴリ機能の実装

    # 環境
    * Rails: 6.1.3
    * ruby: 3.0.0
    * mac: OS

    # 前提
    * 簡易的なTodoApp
    * 投稿機能実装済

    # 実装
    #### `category`モデル作成

    “`ruby:ターミナル
    $ rails g model Category name:string
    “`
    マイグレーションファイル生成。

    “`ruby
    class CreateCategories < ActiveRecord::Migration[6.1] def change create_table :categories do |t| t.string :name t.timestamps end end end ``` ```ruby: $ rails db:migrate ``` ####postテーブルにカテゴリカラムを追加 ```ruby:ターミナル $ rails g migration AddCategoryIdToPosts category_id: int

    元記事を表示

    public private protected の違いを調べてみた。(備忘録)

    ##それぞれの違いを簡単にまとめてみる。
    |メソッド|呼び出し可能範囲|
    |——|————————-|
    |public|クラス内外**どこからでも**呼び出し可能。|
    |private|クラス、同じインスタンス内から**のみ**呼び出し可能。|
    |protected|クラス、同じインスタンス内に**加え、**同じクラスの他のインスタンスからも呼び出し可能。|

    rubyのデフォルトが、publicで他の二つとの違いは、わかりやすいのですが、他の2つ(privateとprotected)の違いがよくわからなかったので調べてみました。

    ##privateとprotectedの具体的な違いを調べてみた。

    * private
    privateメソッドを呼び出す時は、レシーバは指定**できない**。
    * protected
    protectedメソッドを呼び出す時は、レシーバは指定**できる**。

    この***呼び出し時にレシーバを指定できるかできないかの違い***がこの2つを理解する**ポイント**になります。

    :::note info

    元記事を表示

    今が特定の時間範囲内かどうやって判断する?(システム運休期間とか)(リファクタリング)

    ## やりたいこと
    現在時刻が特定の時間範囲内かどうかをスマートに判断したいです。
    例えば、特定の時間帯、ユーザーグループごとシステムへのアクセスや一部機能を制限するのに使えるかと思います。

    今日も弊社先輩のリファクタリングに息を呑んでしまったのでメモメモ。

    Modelは例えばこんな感じ↓
    「利用一時停止」をsuspensionとしてその期間を持たせています。

    “`ruby
    # == Schema Information
    #
    # Table name: user_groups
    #
    # id :bigint not null, primary key
    # name :text not null
    # description :text
    # created_at :datetime not null
    # updated_at :datetime not null
    #

    元記事を表示

    OTHERカテゴリの最新記事