投稿

ラベル(Ruby on Rails)が付いた投稿を表示しています

【Rails6】mechanizeでWebスクレイピングをやるよ!

イメージ
この記事の概要 mechanaizeというgemを使って、webスクレイピングを試してみました。 目次 この記事の概要 目次 注意 やってみよう 参考文献 注意 スクレイピングをするサイトによっては、意図的にサーバーダウンを起こすことにも繋がり、場合によっては逮捕・起訴されることもあります。また、著作権などを著しく侵害する場合もあるので、基本的には自己責任でWebスクレイピングをやるようにしてください。事件になった例について、詳しくは 岡崎市立中央図書館事件 などを参照されるといいと思います。 やってみよう 事前準備編 まず[rails new]コマンドで、sampleAppという名前のアプリケーションを作成します。  $ rails new sampleApp  その後cdコマンドでディレクトリを移動して、  $ cd sampleApp  クラスを作ります。今回はclassという名前のControllerを作りたいので、第4引数に[Class]を指定してあげます。  $ rails g controller Class  controller編 [app] > [controllers] > [class_controller.rb]に移動します。 デフォルトで、こう書いてあると思うので class ClassController < ApplicationController end class ClassController < ApplicationController     def index        agent = Mechanize.new         page = agent.get("https://www.yahoo.co.jp/")         @elements = page.search('h1') # h1要素を検索     en...

【Rails6】herokuで投稿した画像が表示されない

この記事の概要 herokuの無料プラン(Free)プランを使ってると、更新ボタンを久方ぶりに押した時などにアップロードしたはずの画像が消えるよねーって話と、その解決策。 Railsで作成したアプリケーションにActive Storageと、Amazon S3を導入する方法で、どうやって実装していけばいいかを解説する。 目次 この記事の概要 目次 仕様 画像が消える問題 対処法 参考文献 解決策 仕様 ・mac OS Catarina バージョン10.15.1(2017モデル) ・Rails 6 ・heroku Rails 6で作成したWebアプリケーションをherokuのフリープランでアップロードしたという前提で話します。 herokuは有料プランではなく、無料プランのFreeで登録しているとします。 画像が消える問題 herokuへのwebアプリケーションのアップロードが済んだ日の翌日、localhost:3000にアクセすると、どうやら画像が表示されていない...。 試しに適当な画像を一枚選んで再アップロードしてみたら、きちんと表示される。 どうやら、画像が投稿されてしばらく経つと、画像が勝手に消去されるらしい。なぜだろう。 対処法 ・画像が消える理由 herokuのリポジトリがdynoという単位で管理されており、Freeプランだと一定時間経過後にdynoが再起動される仕様になっているから。 →つまり、再起動されるたびに保存されているファイルは消去される。 ・では、どうすればいい? 手順をざっくり解説すると、こうなる。 ①AWSコンソール( こちら:https://aws.amazon.com/jp/console/ )にアクセスし、「S3」を選択。 ②「S3」で、新しいバケットを作成し、自分のトークンIDとアクセスキーを取得。 ③aws-sdk-s3というgemをインストールし、vim上でcredientalファイルにIDとキーを記述する。 ④$heroku buildpacks:add https://github.com/heroku/heroku-buildpack-activestorage-preview ...

【Rails6】環境変数を正しく設定したのに取得できない時は

この記事の概要 環境設定で、例えば外部サービスと連携するときにAPIキーやトークンを環境変数に保存してデプロイするときに、環境変数がエラーだよって言われる時は、' ', " ", ←こいつらを見直そう Rails6(自分の場合はそうでしたが)に限った話ではないと思われるので、例えばlaravelを使っている人(laravelほとんど触ってないので分かりませんが)とかにも当てはまると思います。多分。 目次 この記事の概要 目次 環境 自分が直面した課題 やってみたこと 対処法 まとめ 参考文献 環境 ・mac OS catarina 10.15.1 Beta ・Rails 6.0.0 ・heroku 自分が直面した課題 やろうとしことは、PayJP(  https://pay.jp/  ) という、オンライン決済プラットフォームを自社のサービスに導入しようとした事だ。Pay JP にはcheckoutという機能があり、なんといっても最大の特徴はjavaScriptのコード一つで、決済画面が実装できる事だ。もちろん、Railsのコントローラとデータを紐づける必要性はあるが、それでもプロが作ったUIライブラリと複雑な決済処理を、javaScriptのコード一つで実装できるのは、なかなか画期的で凄いことに思える。 < script type = " text/javascript " src = " https://checkout.pay.jp/ " class = " payjp-button " data-key = " pk_test_0383a1b8f91e8a6e3ea0e2a9 " data-submit-text = " トークンを作成する " data-partial = " true " > </ script > 引用: Pay jp より(https://pay.jp/docs/checkout) Pay.jpには日本語リファレンスも用意されてい...

【Rails5】 FATAL: database does not existに対処する方法

イメージ
この記事の概要 プロジェクトを立ち上げて[FATAL: database does not exist]エラーに直面したので、解決法を書いておこうと思う。 [図1] 「FATAL: database does not exist」(今回発生したエラー) 目次 この記事の概要 目次 やろうと思ったこと エラーの分析 解決策 まとめ 参考文献 やろうと思ったこと プロジェクトを$rails newコマンドで作り、データベースをマイグレートしようとした。 するとこんなエラーが出た。 $ bin/rails db:migrate rails aborted! ActiveRecord::NoDatabaseError: FATAL: database "Twitter_Sample_development" does not exist /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:696:in `rescue in connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:691:in `connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize' (以下略) データベースを作ろうとすると、rails先生にabortedされてしまう。いまいち原因がわからない。 エラーの分析 「FATAL: database does not exist」は正しく書くと、「FATAL: database 'データベース名' does not exist」と表記されている。  'データベー...

【Rails5】SyntaxError: (): mapping values are not allowed エラーの解決法

この記事の概要 SyntaxError: (<unknown>): mapping values are not allowed 上記エラーに対応するために調べたところ、.ymlファイルのインデントが原因であることがわかった。 目次 この記事の概要 目次 試そうとしたこと エラーの分析 ja.ymlを見てみる 解決策 まとめ 試そうとしたこと Rails5で簡単なTaskアプリケーションを作って学んでいたのだが、 SyntaxError: (<unknown>): mapping values are not allowed  エラーにハマった。 エラーの分析 can not load translations from /Users/*****/Task_App/config/locales/ja.yml: # ): mapping values are not allowed in this context at line 15 column 7 どうやらja.ymlにエラーがあるらしい。 ymlファイルは、エラーメッセージが日本語を出すためのrawファイルであり、 GitHubのrails-|18nリポジトリにあるファイルを適当にダウンロードしたものである。 ja.ymlなので日本語設定である。 en.ymlだと英語設定になる。 ja.ymlファイルを見てみる (中略)    models:    task: タスク    attributes:    task:          id: ID    name: 名称    description: 詳しい説明    created_at: 登録日時    updated_at: 更新日時 んー? 15行目あたりにエラーがあるらしいが、特に変わったところは見当たらない。 何がおかしいのだろうかと思って色々と検索してみた。 解決策 どうやら、ymlファイルにはスペースの数が決まっているようだ。 一番最初の階層のスペースゼロだとすると、 最初の階層はスペース無し。二番目の階層は半角スペース2つ 三番目の階層は半角スペー...