前提・実現したいこと
Ruby on Rails で作ったアプリに、bitflyerのビットコイン価格を1分おきに取得してくる機能をつけたいと考えています。価格を取ってくるプログラムファイル(trading.rb)を作り、Ruby on Rails で作ったアプリのフォルダに入れてから実行したところ、
uninitialized constant LastPrice (NameError)
というクラスメソッドのエラーが出てしまいます。
初心者ゆえ、何か根本的な勘違いをしてるかもしれませんが、ご教授いただけると幸いです。
発生している問題・エラーメッセージ
Traceback (most recent call last): trading.rb:5:in `<main>': uninitialized constant LastPrice (NameError)
該当のソースコード
trading.rb
ruby
1require 'net/http' 2require 'uri' 3require 'json' 4 5@btcprice = LastPrice.new(id: 1, pair_code: 1, pair_name: "Bitcoin-JPY") 6@btcprice.save 7 8loop do 9 10uri = URI.parse("https://api.bitflyer.jp/v1/getticker") 11 12https = Net::HTTP.new(uri.host, uri.port) 13https.use_ssl = true 14response = https.get uri.request_uri 15 16@btcprice = LastPrice.find(1) 17@btcprice.bitflyer = JSON.parse(response.body)["ltp"] 18@btcprice.save 19 20sleep(60) 21 22end
/app/controllers/last_prices_controller.rb
class LastPricesController < ApplicationController def index end def create @btcpr = LastPrice.new(id: 1, pair_code: 1, pair_name: "Bitcoin-JPY") @btcpr.save redirect_to("/last_prices") end end
試したこと
LastPriceのメソッドを使用しなければ、ビットコイン価格を取得して表示するなどのことは問題なくできるので、bitflyerのAPIうんぬんは関係なさそうです。またRailsアプリ内の.html.erbファイルなどでLastPriceメソッドを使用すると問題なく動くので、LastPriceメソッド自体は定義できているようです。
補足情報(FW/ツールのバージョンなど)
bitflyerのAPIに関するページ
https://lightning.bitflyer.jp/docs/playground
https://lightning.bitflyer.jp/docs#socket.io-2.0-websocket
回答1件
あなたの回答
tips
プレビュー