おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

プログラミング

【Rails】Strong Parametersで`param is missing...`エラーになる

こんちには。opiyoです。 ActionController::ParameterMissing in ImagesController#create param is missing or the value is empty: image def image_paprams params.require(:image).permit(:name, :picture) end end こんな感じでエラーになるのだが、pa…

Docker For MacでPostgreSQL9.5系の環境を作ってみた!

こんばんは。opiyoです。 brewでインストールするとなんだかPostgreSQL9.6系がインストールされてしまうのだけど、本番環境と同じバージョンをローカルに使いたくてウズウズしていたのだが... Docker使えば良いじゃんってアドバイス貰ったので教えてもらった…

【Rails】ファイルのフルパス、ファイル名を取得する

過去データとかでファイルを一括で読み込みたい場合で使える技です。 > files = Dir.glob("/Users/taku/rails/gist/test/*.xls") => ["/Users/taku/rails/gist/test/1.xls", "/Users/taku/rails/gist/test/2.xls", "/Users/taku/rails/gist/test/3.xls", "/U…

【Ruby】配列の中身が重複しているかをチェックする方法(select、find)

csvのデータを取り込み別のcsvへ吐き出す処理をしていたのですが、値が重複していることに気がつきました。 こんな感じ。 data = [] inport = CSV.read("./inport.csv") inport.each do |c| data << c end CSV.open("./export.csv", "w") do |export| data.e…

【bootstrap3】ナビゲーションバー(Navbar)で起きたレイアウト崩れと右寄せへの対応方法

こんばんは。opiyoです。 結論としては勝手な解釈をして余計なことしてた!に尽きるのだけど、同じようなハマり方すると時間もったい無いので共有です。 <header> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample1"> </button></div></div></nav></header>

【Rails】XX件以上登録できないようにする独自バリデーションメソッドを設定する方法

こんばんは。opiyoです。 Railsアプリで「XX以上は登録できない!」というバリデーションを設定したかったので、やり方を調べてみました。 やりたいこと Keywordというテーブルにデータを登録する処理で、5つまでしか登録できないようにバリデーションを設定…

【Bootstrap】navbarの背景色、文字色の悩みはこれ一発で解決だわー

何か作る時bootstrapにお世話になることあると思うのですが、cssいじっただけだと何故か上手くいかない。 例えば今回のnavbarですね。 ナビゲーションメニューがかっこよく決まらないとモチベーションが全く上がらないので、いろいろ探していたらあったわー…

【Rails】ファイルをDBに保存する方法

ファイルを保存する方法はRailsチュートリアルとかでは、CarrierWaveというgemを使う。 だがちょっとしたアプリとか作りたい時には、DBに保存した方が都合がいい時もあるはず。 gemを使う方法は別の機会でまとめるとして、今日はDBに保存する方法を。 モデル…

【Ruby on Rails】月の最初の日、最終日はどうやって取得する?

画面から入力された日付の月が何日までなのか取得する方法が分からなかったので調べてみました。 月の最終日 irb> Date NameError: uninitialized constant Date Did you mean? Data from (irb):9 from /Users/taku/.rbenv/versions/2.3.3/bin/irb:11:in `<main>' </main>…

【Rails】created_atとupdated_atへデータを登録する方法

過去データの取り込みで直接DBにデータを入れる際にcreated_atとupdated_atにはどうやって値をセットすれば良いのか分からなかったから調べてみた。 結論としてはTimeWithZoneクラスが使われているからTime.zone.nowすれば良いっぽい。 > Shop.first.created…

【Rails環境構築】bundle installでエラーになる時の対処法!

こんにちは。opiyoです。 昨日まで普通に動いていたのに 教科書、本と通りに設定しているはずなのに 何もしてないのに動かないぞー って経験無いでしょうか? 僕も昨日新しくMacが手に入ったのでRails環境をローカルに構築して今作っているRailsアプリを動か…

初心者でも30分で出来た!MacにRails開発環境を作ってみた

こんばんは。opiyoです。 プログラマの勉強をしていて最初につまずくポイントは環境構築じゃないでしょうか? 今はCloud9とかWeb上で勉強できるサイトなどが当たり前になってきているので、作るきっかけは無いかもしれないですがエンジニアとして働いていく…

【Ruby on Rails】スクレイピングで簡単にmeta情報を取得するgem metainspector

こんばんわ。エンジニアに夢を描くopiyoです。 最近はずっとスクレイピングについて触れることが多いのですが、こんな経験ないですか? ブログ書く時とかurl貼り付けるだけで引用文が作成されるけど、あれどうやってんだ? まさにこういう奴↓↓ opiyotan.hate…

【Rails】NokogiriじゃなくてMechanize gemで簡単スクレイピング!

先日Nokogiriを使ったWebスクレイピング方法を紹介しましたが、もっと簡単に出来るgemを見つけたのでご紹介。 opiyotan.hatenablog.com その名はMechanize 利用する準備 gemのインストール gem 'mechanize' $ bundle install スクレイピング先のサイト情報を…

【Ruby】Nokogiriを使って「はてなブログ」をスクレイピングする!

こんばんは。エンジニアになれるか不安なopiyoです。 今日はWebサイトの情報を取得することが出来る、Webスクレイピングという技術をRubyでやってみます! Webスクレイピングとは Webサイトの情報を取得する技術ってイメージですが、wikipediaでちゃんと調べ…

【Ruby on Rails】決まった時間に自動で処理してくれる`whenever`の使い方!

こんばんは。早くエンジニアになりたいopiyoです。 以前rssを取得する方法について、まとめて見たのですが今日はそれの発展させたいと思います。 opiyotan.hatenablog.com 時代は変わる。そして情報も常に変わる。 だから、rss情報も常に最新の情報を自動で…

【Bootstrap】ナビゲーションメニューをセンタリングして均等化する方法!

こんばんは。opiyoです。 よくあるナビゲーションメニューですが、センタリングされてないとダサいですよね。 bootstrapのnavのサンプルを、そのままコピペして試してみたのですが センタリングされない 文字数に応じた領域になってしまいかっちょ悪い って…

【Ruby on Rails】Rakeタスクを使えば様々な処理が自動化出来る?(初心者向け)

今日は様々な場面で活躍するrakeタスクの作り方と実行方法をまとめてみます。 Rakeとは そもそもRakeですが、Rubyで書かれたコードをタスクとして作成しておき必要に応じて呼び出し実行する事が出来る機能です。 rakeタスクを利用する場面としては、こんなの…

【Ruby】rssを取得して簡単にまとめサイトが作っちゃおう!

こんばんは。早くエンジニアになりたいopiyoです。 最近は会社で全くコードを書くことが出来ず、焦りまくっていう日々を歩んでいるのですが自分で少しでもコードを書く時間を作ろうと思ってRailsアプリを作っています。 その中でトレンド情報を取得して表示…

【PostgreSQL】Dockerで作ったDBにcsvファイルを参照したcopyコマンドを実行するには?(\copy)

コンテナチェック $ docker ps コンテナログイン $ docker exec -it NAME /bin/bash コンテナへファイルをコピー $ docker cp ~/hoge.csv NAME:/tmp/ PostgreSQLにログイン $ psql hoge -p5432 copyコマンドのファイルパスをコンテナ側に合わせ実行 COPY sho…

【PostgreSQL】テーブルをコピーしたらindexや制約がコピーされないぞ?

過去データの取り込み作業でテーブルにデータを流し込む作業をしているのだけど、念のためのバックアップを作って何かあれば戻せるように準備していたのだが、indexや制約がコピーされてないことに気づき調査開始。 単純にコピー作って戻す方法(ダメな方法…

【Ruby on Rails】ActiveRecordを使ってランダムなデータを指定した数だけ取得する方法

データの更新作業などで更新結果を確認したい場合に、対象データが多い場合は、全部のデータ見るのは大変なので何件かデータを取得してチェックするなんて場面があるかなと思います。 そんな時にランダムなデータを取得して結果の確認が出来れば便利ですよね…

【Heroku】DBを1から作り直したい時にやること(rails db:reset)

ローカルだと一発で出来るdb:resetがherokuだとできないだと $ rails db:reset $ rails db:seed $ heroku run rails db:reset rails aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'prod…

【Ruby】文字列をDate(日付)に変換する時は桁数を意識しないと違う日付になる

文字列が意図しない日付になる? 売上などのデータでcsvファイルを連携して取り込むってのはよくある話だと思うのですが、単純に文字列結合して変換すると違った日付になったりエラーになったりするので気をつける必要がある。 > require 'date' => true >Da…

【Ruby on Rails】`rails db:reset`だと変更/追加したmigrationファイルが反映されない!

rails db:reset テーブル削除 → schema.rbの情報を元に作り直す rails db:migrate:reset テーブル削除 → 作成 → db:migrateが実行される つまり、migrationファイルを作成した後にそのファイルを修正した場合はdb:resetしても反映されない! 調べてみたら、…

CentOS6で新しいRubyのバージョンが無い時どうすればいいの?

gitを使ってrbenvをインストールしている。 Rubyのバージョンを見てみると2.3.3までしかインストールされてない状況。 $ cd ~/.rbenv $ git pull origin master $ rbenv install --list 2.3.3 git pullすればいけるんじゃ無いかと思ったけど、ダメぽ。 で色…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:シェア=リツイート機能の拡張)

こんにちは。opiyoです。 今回は、番外編:シェア=リツイート機能の拡張をやっていきます。 マイクロポストにリツイートアイコンを表示して、「シェア=リツイート」できるようにします。 ではでは、早速行ってみましょう。 やること 仕様 【できたこと】 リ…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:いいね機能の拡張)

こんにちは。opiyoです。 今回は、番外編:いいね機能の拡張をやっていきます。 マイクロポストにハートアイコンを表示して、「いいね」できるようにします。 ではでは、早速行ってみましょう。 やること 仕様 「いいね」機能を実装するに当たって、ざっくり…

30歳まで残り2年の僕は人生を変えるためにRailsチュートリアルを始めようと思う(番外編:検索機能の拡張)

こんにちは。opiyoです。 今回は、番外編:検索機能の拡張をやっていきます。 ユーザーとマイクロポストをあいまい検索できるような機能を各画面に追加します。 ではでは、早速行ってみましょう。 ユーザー一覧に名前をあいまい検索できる # app/views/users…

プログラミング初心者でも出来た!ビットコイン自動売買システムをRubyで作る

こんにちは。opiyoです。 今日は私が入会している人生逃げ切りサロンのメンバーである迫 佑樹さんが Rubyで作る! ビットコイン自動売買システム の作り方を解説した動画について紹介させてもらいます。 この動画の最大の魅力はプログラミング経験が全くない…