以下のようにcapybaraでとあるサイトにクローラーを使って自動ログインするファイルを作成しました。(挙動を確認したいだけなので、自分のサイトで行なっています。)
これをrails上で動くようにしたいのですが、railsにこのmoduleを読み込ませることができません。
require 'capybara' require 'capybara/dsl' require 'selenium-webdriver' Capybara.current_driver = :selenium Capybara.app_host = "https://fuga.jp/" Capybara.default_max_wait_time = 5 module Crawler class go include Capybara::DSL def login visit('') find(:xpath, '//*[@id="header"]/div/div/div/div[3]/a').click fill_in "user[email]", :with => 'myemail@hoge.com' fill_in "user[password]", :with => 'password' check "user_remember" click_button("ログインする") end end end crawler = Crawler::go.new crawler.login
railsではこのサイトを参考にしながら、以下のように設定しました。
↓app/lib/crawler.rb
module Crawler class Go include Capybara::DSL def login visit('') find(:xpath, '//*[@id="header"]/div/div/div/div[3]/a').click fill_in "user[email]", :with => 'myemail@hoge.com' fill_in "user[password]", :with => 'password' check "user_remember" click_button("ログインする") end end end
↓PostsController
class PostsController < ApplicationController include Crawler def index require 'capybara' require 'capybara/dsl' require 'selenium-webdriver' Capybara.current_driver = :selenium Capybara.app_host = "https://fuga.jp/" Capybara.default_max_wait_time = 5 crawler = Crawler::Go.new crawler.login end end
エラーメッセージは
NameError in PostsController#index uninitialized constant Crawler::Go ______________ Capybara.default_max_wait_time = 5 crawler = Crawler::Go.new #ここが赤字 crawler.login end
かれこれ二時間くらい調べているのですがやり方がわかりません。
おわかりの方がいれば回答よろしくお願いします。
バージョン
rails 5.1.5
ruby 2.4.0p0 (2016-12-24 revision 57164
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/18 08:37
2018/03/18 09:05
2018/03/18 09:20
2018/03/18 09:21
2018/03/18 09:42
2018/03/18 09:45
2018/03/18 09:54
2018/03/18 09:54
2018/03/18 09:55
2018/03/18 10:19
2018/03/18 10:22 編集