Ruby関連のことを調べてみた2020年01月23日

Ruby関連のことを調べてみた2020年01月23日

rakeタスクに引数を渡したいとき

rakeタスクで引数を渡したい!
意外とまとまった記事がなかったので備忘。

## タスク名とともに引数を書く
“`ruby
task :task_name, [‘filter’] => :environment do |_task, args|
p args
p args[:filter]
~
“`
`filter` の部分は任意の文字でOK

## タスク実行方法
command: `rake “task_name[arg]”`

`arg` 部分に渡したい引数を書く。この場合だと “arg” が渡される。
タスク全体を “” で囲まないと、引数までタスクとして認識されない。

## 実行結果
“`
=> #
“arg”
“`

元記事を表示

【Rails】kaminari&ransackでページネーションと検索機能を実装

【ページネーション】
1ページあたり20件に設定。
スタイルはBootstrap4で実装します。

【検索機能】
投稿一覧から検索とブックマーク済み投稿一覧から検索の2パターン実装していきます。
検索条件はタイトルか本文の部分一致とします。

【事前準備】
・ブックマーク機能を実装しておいてください。
参考資料:[【Rails】ブックマーク(お気に入り)機能](https://qiita.com/hiro266/items/8a0374155cd18adbd7cf)
・bootstrap4を使用できるように設定しておいてください。
参考資料:[BootstrapをRailsに導入してみよう!徹底解説!](https://tech-boost.jp/magazine/Programming-languages/ruby/1073142)

# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem kaminari`
`gem ransack`

# 実装
それでは実装していきます。

## gemの追加
`gem kaminari`
`gem ransack`

G

元記事を表示

enumを導入すると起きるエラー【rails】

#概要
数字を文字列に変換してくれる最強助っ人「enum」ちゃんを導入するとエラー発生。

エラー文
‘x’ArgumentError in xxx
‘x’ is not a valid xxx

スクリーンショット 2020-01-09 18.22.23.png

#解決方法

Shift_user.model(enumを書いているモデル)での定義ミス。
###詳細
**Before↓**

“`model.rb
class ShiftUser < ApplicationRecord enum work_type:{ "午前": 1, "午後": 2, "一日": 3, } end ``` **After↓** ```model.rb class ShiftUser < ApplicationReco

元記事を表示

【Rails】 DataTables のテーブルに関連付けされたモデルのデータを表示する方法

# はじめに
DataTableへデータを渡すときに json 形式に変換する必要があります。
関連付けされたモデルのデータを簡単に json 形式に変換することができます。

#### 関連リンク
関連リンクを下記に載せておくので、必要であれば参考にしてください。。

* 【Rails】 DataTables 実装方法
* https://qiita.com/syukan3/items/5ac9f0d1b43334b5eb13
* 【Rails】 DataTables 動的にカラムを変更する方法
* https://qiita.com/syukan3/items/83c4ecd351db57911943
* 【Rails】 DataTables 検索結果の保持方法
* https://qiita.com/syukan3/items/4be6ba8ef22aff189fc4

# 関連付けされたモデルのデータを表示する方法
as_json の include をすることで user に関連付けされた post のデータを一緒に json のデータとして作成してく

元記事を表示

初学者によるプログラミングMemo #18 フィボナッチ数列(メモ化)

#はじめに
今回はフィボナッチ数列のお話です
なお、本記述はMacにおいて、Railsでの開発を前提としています
また、まだまだひよっこですので、不備等ございましたらご指摘いただけると幸いです

#目次
– フィボナッチ数列とは
– プログラムで解いてみる

##フィボナッチ数列とは
初項 = 1、第2項 = 1、第3項以降は、前項と前々項の和となる数列です
第3項は初項と第2項の和なので「1+1」で”2″となります
第4項は第2項と第3項の和なので”3″となります
また、フィボナッチ数列は黄金比とも関係してるので、知りたい方は調べてみてください
数列としては、「1,1,2,3,5,8,13,21,34,55,・・・」と続きます

この数列の第n項目は何になるかを求めたいと思います

##プログラムで解いてみる
では、プログラムで解いてみましょう
まずは、フィボナッチ数列がどういうものだったかを思い出しましょう

“`.rb
fib(n) = fib(n-2) + fib(n-1)
“`
第n項は前(n-1)項と前々(n-2)項の和でしたよね
しかし、初項と第2項は決まっています

元記事を表示

railsサイトマップをサーチコンソールに送る方法

route.rb

“`
get ‘sitemap’, to: redirect(‘https://s3-ap-northeast-1.amazonaws.com/バケット名/sitemaps/sitemap.xml.gz’)
“`

sitemap.rb

“`
SitemapGenerator::Sitemap.default_host = “サイトのurl”
SitemapGenerator::Sitemap.sitemaps_host = “https://s3-ap-northeast-1.amazonaws.com/#{ENV[‘S3_BUCKET_NAME’]}”
SitemapGenerator::Sitemap.sitemaps_path = ‘sitemaps/’
SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new(
ENV[‘S3_BUCKET_NAME’],
aws_access_key_id: ENV[‘AWS_ACCESS_KEY_ID’],
aws

元記事を表示

JSON Web Token(JWT)を用いたAPIの認証の実装(Rails)

# 解決する課題

従来のWebアプリケーションでは、認証情報をCookiesを利用して保持し、ログイン状態を保つことを実現しています。

APIではブラウザを介さないことからCookiesを使用したセッションの保持は行えないため、認証時に生成したトークンを用いて認証済み(ログイン状態)であることを表現できます。

# JSON Web Tokenの利用

認証時に生成するトークンは慣例通りJSON Web Token(JWT)を利用します。
Railsでは”jwt”というGemがあるので、簡単に扱うことができます。

アプリケーションによりますが、controller/concernsに認証用モジュールを設け、そこにJWT関連の処理をまとめて記載すると扱いやすいです。

## 暗号化・復号化の実装

手始めに、暗号化・復号化の実装例は下記のようになります。
app/controller/concerns下に作成しています。

“`ruby:jwt_authenticator.rb
module JwtAuthenticator
require “jwt”

SECRET_K

元記事を表示

RESTfulとは。。。

Ruby on Rails初心者です。
RESTfulという言葉をよく耳にするので自己理解も兼ねてまとめたいと思います。

# RESTfulとは
RESTの規約に従った、Webサービスのこと。
このRESTは以下のような特徴を持っています。

**◉アドレス可能性**
リソースをURIとして一意に指し示すことができる

**◉ステートレス性**
一つ一つのリクエストに処理に必要な情報を全て含める性質(自己完結型)

**◉統一インターフェース**
URIで指し示したリソースに対する操作を、GETやPOSTといった8つメソッドに絞り込み、限定的なインターフェースを行う

**◉接続性**
リソースをリンクで接続し、一つの情報に他のリンクの情報なども含めることができること

# RESTfulにすることのメリット
○ URIの部分などで、美しくわかりやすいインターフェースを表現できる
○ 他の開発者が設計を理解しやすくなる
○ いちいちURLやHTTPメソッドを考えないで済む
○ サーバがクライアントの情報を共有しないことにより、スケーラビリティが向上する。
(サーバがクライアントの

元記事を表示

TECH EXPERT 短期集中_転職コース 70期 3日目の振り返り

1/22 (水)

10時〜11時 自習

11時〜11時半 朝礼 昨日と同じ

11時40〜18時 FOCUS DAY 60分超集中→20分超整理

18時〜22時 自習 Railsに苦戦 マイグレーションファイルをミス

進捗率100%にできたが、理解度は50%以下・・・

元記事を表示

Ruby on Railsとは、なんなのか簡単に説明してみる(自分なりの解釈)

#Ruby on Railsは自動調理器
自分が作りたいサービス(**料理**)を、
必要な機能(**材料**)を入力(**自動調理器にぶち込む**)するだけで、
ほぼ完成させることが出来るツールのようなもの。

見た目や味の調整の為に、整える。(**サイトの細かい構成をいじる**)

自動調理器ってなんなんだ。。。

元記事を表示

[Ruby on Rails]データベースの作成、カラムの追加

いつも忘れるのでRubyonRailsでのデータベースの作成、カラムの追加についてメモ

#データベース作成
まずはデータベースへの変更指示を記述するマイグレーションファイルを作成する
モデル(User)も同時に作成される。カラムは`(パラメーター名):(変数の型)`で設定
コマンドラインでカラム設定しないでファイルに直書きでもOK

“`terminal:terminal
rails g model User name:text address:text age:integer
“`
次にマイグレーションファイル内容を実行する

“`terminal:terminal
rails db:migrate
“`
上のコマンドの代わりにこっちでも実行できるけど違いは分かりません(調べます)

“`terminal:terminal
bundle exec rake db:migrate
“`

#カラム追加
まずマイグレーションファイルを任意の分かりやすいファイル名で作成

“`terminal:terminal
rails g migration add_occupatio

元記事を表示

Railsチュートリアル 第2章

この章では、scaffold機能を使ってコードを自動生成する方法などを学んだ。

#scaffoldとは
本来、Railsでアプリケーションを作成するには、モデル、コントローラー、ビュー等を作り、ルーティングも作成する必要があるが、それをコマンド一つで一括で作成してくれるのがscaffold。

#試しにscaffoldを試してみると
今回は、ユーザー情報(名前、メールアドレス)の登録・更新・削除が行える画面を作ってみる。

“`
$ rails generate scaffold User name:string email:string
invoke active_record
create db/migrate/20200122063729_create_users.rb
create app/models/user.rb                  ⇨モデル作成
invoke test_unit
create test/models/user_test.rb
create test/fixtures/use

元記事を表示

jiraのapi

# jiraのapi

basic認証とoauth認証があるみたいだが、oauth認証はaccess tokenを取得して、再取得するのが面倒そうなので、basic認証を使うことに。

が、Deprecatedになったみたい?
https://community.atlassian.com/t5/Confluence-questions/Trying-to-access-Confluence-using-Basic-Authentication/qaq-p/1268998

# api_tokenを使ってapi呼び出し

こっち見るとapi_tokenというのを使えばいいみたい
https://community.atlassian.com/t5/Confluence-questions/Trying-to-access-Confluence-using-Basic-Authentication/qaq-p/1268998

ということでrubyだと以下で取れる。
jira-rubyというgemがあるが今の所対応してないので、自分で取るしかないみたい

“`ruby

user_na

元記事を表示

【初心者向け】Fizzbuzzをメソッドを使用して解く

#Fizzbuzzの問題を応用し、数字の横にFizzbuzzを表示させてみた。

条件
・1~100までを表示させる
・3は数字の3とその横にfizzと表示
・5は数字の5とその横にbuzzと表示
・15は数字の15とその横にfizzbuzzと表示
・それぞれfizz,buzz,fizzbuzzのメソッドを使用すること

#擬似コードを書く

“`ruby

def fizzbuzz
#15と表示
#15の横にfizzbuzzと表示させる
end

def fizz
#3と表示
#3の横にfizzと表示させる
end

def buzz
#5と表示
#5の横にbuzzと表示させる
end

1~100までの繰り返し文
もし15で割って0なら
fizzbuzzメソッドへ
もし3で割って0なら
fizzメソッドへ
もし5で割って0なら
buzzメソッドへ
その他は
数字をそのまま表示
end
end
“`

#コーディングしていく

“`ruby

def fizzbuzz(num)
print nu

元記事を表示

Railsチュートリアル 第1章

Railsチュートリアルを進めていく上での備忘録。

#環境
PC:MacBook Pro
IDE:AWSCloud9
Rilsバージョン:5.1.6
Rubyバージョン:2.6.3

Cloud9を使用する場合、c9コマンドが使えると便利なので、インストールしておく。

“`
$ npm install -g c9
“`

作業しやすい様にbashrcも変更しておく。

“`ruby:bashrc
# .bashrc

export PATH=$PATH:$HOME/.local/bin:$HOME/bin

# load nvm
export NVM_DIR=”$HOME/.nvm”
[ “$BASH_VERSION” ] && npm() {
# hack: avoid slow npm sanity check in nvm
if [ “$*” == “config get prefix” ]; then which node | sed “s/bin\/node//”;
else $(which npm) “$@”; fi
}
# [ -s

元記事を表示

トップレベルで定義したメソッドは全クラスのプライベートメソッドとなる

# イントロダクション
西遊記より
孫悟空にお釈迦様は言われます「私の掌から飛び出すことができれば、お前を自由にしてやる」。悟空は筋斗雲に飛び乗り世界の端を目指します。ここまで来たら大丈夫だろうとそこの山に「悟空参上!」と書きました。お釈迦様に報告した所、お釈迦様の掌にはその文字が書いてありました。

# 一見奇妙なコード
ある日、肥大化したクラスをリファクタリングしようと処理を分割していた時、不思議な現象に遭遇しました。

“` ruby
class Hoge
def execute
@str = “Hello Ruby!”
hello
end
end

def hello
puts @str
end

hoge = Hoge.new
hoge.execute
# => Hello Ruby!
“`
このコードは問題なく動作して「Hello Ruby!」を出力します。
しかしなぜ分離独立している筈のhelloメソッド内部でHogeクラスのインスタンス変数strを参照できているのでしょうか?他の言語ならエラーになりそうなのに。

# 何がおきているのか

元記事を表示

Rubyメソッド集(不定期更新)

Rubyのメソッドに関して、まとめていきます。
*新しいメソッドを学習次第、追記・更新していきます。

#Ruby メソッド
##文字列を分割/split

“`
String型変数名.split(“区切り文字”, 分割後の要素数)
“`

splitメソッドは、対象となる文字列を指定した区切り文字によって分割し、
それぞれを配列の要素として格納します。

“`:例
“Ruby, Rails, JavaScript”.split”(“,”) #=>[“Ruby”, ” Rails”, ” JavaScript”]
“`

##先頭の小文字を大文字に変換/capitalize

“`
文字列.capitalize
“`
capitalizeメソッドは、先頭の小文字を大文字に変換したい場合に使用するメソッドです。

“`:例
rails.capitalize #=>”Rails”
“`

##文字列を反転/reverse
reverseメソッドは、指定した文字列を反転して取得したい場合に使用するメソッドです。

“`
文字列.reverse
“`

“`:例
“abc

元記事を表示

Rails6 のちょい足しな新機能を試す 117(puma pidfile編)

# はじめに

Rails 6 に追加された新機能を試す第117段。 今回は、`puma pidfile` 編です。
Rails 6 では、 `rails new` したときに `config/puma.rb` に `pidfile` の設定が追加されるようになりました。
`pumactl` で制御できるようにするためのようです。

なお、この修正は、Rails 5.2.4 にも反映されています。

Ruby 2.6.5, Rails 6.0.2.1, Rails 5.2.3, Rails 5.2.4.1 で確認しました。 (Rails 6.0.0 でこの修正が入っています。)

“`shell
$ rails –version
Rails 6.0.2.1
“`

# Rails プロジェクトを作る

Rails プロジェクトを新たに作成します。

“`shell
$ rails new rails_sandbox
$ cd rails_sandbox
“`

# `config/puma.rb` を確認する

`config/puma.rb` を確認すると `pidfile

元記事を表示

rails gするとundefined local variable or method `config’ for main:Object (NameError)が出て困った話

# はじめに
`spring stop`すればいいよ!とか書いてあって対処したもののさっぱり解決しなかったので、色々試行錯誤した時の話です。

# どんなエラーが出たか
以下のようなエラーが出ました。
`config`がなんか変らしいです。

“` sh
/Users/t-nakagawa/rails/config/application.rb:46:in `‘: undefined local variable or method `config’ for main:Object (NameError)
from /Users/t-nakagawa/rails/vendor/bundle/ruby/2.6.0/gems/spring-2.0.2/lib/spring/application.rb:92:in `require’
from /Users/t-nakagawa/rails/vendor/bundle/ruby/2.6.0/gems/spring-2.0.2/lib/spring/application.

元記事を表示

docker-compose up出でるエラー

#概要
いつものようにDocker-compose upするとサーバーが立ち上がらない。

具体的には、↓こんな感じでエラーが出ている。

スクリーンショット 2020-01-11 23.34.02.png

〈注意すべきポイント〉
**bundler: failed to load command: rails (/usr/local/bundle/bin/rails)
Bundler::GemNotFound: Could not find ast-2.4.0 in any of the sources**

#解決策
**docker-compose build**
で解決!!

#原因(ここ重要!)
原因によっては対処法が変わってくる。
今回の場合は、前回このアプリを利用した時にgemを追加して
bund

元記事を表示

OTHERカテゴリの最新記事