投稿

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

【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 ...

【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・6】新しいプロジェクトを作る時の備忘録

この記事の概要 Railsプロジェクトを作る方法だが、何回やってもあまりちゃんと覚えられないので記事に残すことにした。この記事では、Railsプロジェクトを作る際はどのようにして作ればいいのかを簡単にまとめていきたい。 目次 新規Railsプロジェクトの作成 ディレクトリの移動 データベースの作成 サーバを立ち上げる まとめ 関連記事 新規Railsプロジェクトの作成 まずはターミナルを起動し、Railsプロジェクトを作成するコードを書く。 $ rails new [プロジェクトネーム(任意の名前でOK)] プロジェクト名の下に「-d postgresql」と記入することで、ローカル環境でもpostgresqlを使 用することができる。 $ rails new [プロジェクトネーム(任意の名前でOK)] -d postgresql SQLで代表的なものには、「MySQL」「SQLite」などがある。 ここでは「Twitter_sample」というアプリを作るため、 $ rails new Twitter_sample -d postgresql という風に打ち込めばOK. すると、長いコードがズラズラと自動生成されていく。 ディレクトリの移動 $ cd [プロジェクト名] 「cd」の後に「プロジェクト名」を入力することで、そのプロジェクト名のある場所に移動することができる。 今回は、先ほど作ったTwitter_sampleという場所に移動したいため、 cdの後に一つスペースを空けて、「Twitter_sample」と入力すれば良い。 $ cd Twitter_sample 話は脱線するが、文字の打ち間違いなどにより、思ってたのと違うディレクトリに移動したい時は、 $ cd とだけ打てばいい。 データベースの作成 お目当のフォルダにcdを使って移動できたら、データベースを作る。 $ rails db:create このコードを打てば、データベースがまたもや勝手に作られていく。 サーバーを立ち上げる $ rails s ここでは「bin/rails s」と打っても良い。 すると、デフォルトのブラウザにRailsのオフィシャルペ...

【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つ 三番目の階層は半角スペー...