ruby_spark 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -17
- data/examples/device_example.rb +11 -0
- data/examples/tinker_example.rb +3 -3
- data/lib/ruby_spark.rb +1 -1
- data/lib/ruby_spark/{core.rb → device.rb} +5 -5
- data/lib/ruby_spark/tinker.rb +1 -1
- data/lib/ruby_spark/version.rb +1 -1
- data/ruby_spark.gemspec +1 -1
- data/spec/fixtures/vcr_cassettes/analog_read.yml +3 -3
- data/spec/fixtures/vcr_cassettes/analog_write.yml +3 -3
- data/spec/fixtures/vcr_cassettes/{bad_core_id.yml → bad_device_id.yml} +1 -1
- data/spec/fixtures/vcr_cassettes/bad_token.yml +1 -1
- data/spec/fixtures/vcr_cassettes/digital_read.yml +3 -3
- data/spec/fixtures/vcr_cassettes/digital_write.yml +3 -3
- data/spec/fixtures/vcr_cassettes/function.yml +2 -2
- data/spec/fixtures/vcr_cassettes/info.yml +2 -2
- data/spec/fixtures/vcr_cassettes/spark_timeout.yml +1 -1
- data/spec/fixtures/vcr_cassettes/variable.yml +3 -3
- data/spec/spark/{core_spec.rb → device_spec.rb} +16 -16
- data/spec/spark/tinker_spec.rb +5 -5
- metadata +8 -8
- data/examples/core_example.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af6922950842278996873843b41493f2f45a6c4c
|
4
|
+
data.tar.gz: 878e70e2c0792eda5f7d564c143c8ed819a2040d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e59dab8bc3343ca962d514595247c00b119d00acc52cefe383f33fd49b51c4b48353800bc1ac22d2e26ab8aeda86713eb83566347aaf624d61e506cd1cf2e080
|
7
|
+
data.tar.gz: 17e26b8595ec88e2aba6db5a70e5a6c37458d508d22beadabb00c39168948cc61e6ef0a7b43a24a7cf97d838a37b3b86b4c71068c545dbc1d820621984d00181
|
data/README.md
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Easily control you [Particle](http://particle.io) (formerly Spark) Device with Ruby.
|
4
4
|
|
5
|
-
## Obtaining a Particle Access Token and
|
5
|
+
## Obtaining a Particle Access Token and Device ID
|
6
6
|
|
7
|
-
Assuming at this point you've followed Particle's [Getting Started](http://docs.particle.io/#/start) guides and connected your
|
7
|
+
Assuming at this point you've followed Particle's [Getting Started](http://docs.particle.io/#/start) guides and connected your Device with the Particle Cloud.
|
8
8
|
|
9
|
-
Head over to the [Particle Build IDE](https://www.particle.io/build). In the Settings tab you can get your Access Token, and you can fetch your Device ID from the
|
9
|
+
Head over to the [Particle Build IDE](https://www.particle.io/build). In the Settings tab you can get your Access Token, and you can fetch your Device ID from the Devices tab. You'll need these both to authenticate your API calls, and the Device ID to direct them.
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -37,46 +37,46 @@ RubySpark.configuration do |config|
|
|
37
37
|
end
|
38
38
|
```
|
39
39
|
|
40
|
-
###
|
40
|
+
### Device API
|
41
41
|
|
42
|
-
To instantiate a
|
42
|
+
To instantiate a Device, you need to pass it's `device_id`. If you have your `access_token` setup ahead of time using the `config.access_token` then the second argument is optional.
|
43
43
|
|
44
44
|
```ruby
|
45
|
-
|
45
|
+
device = RubySpark::Device.new("device_device_id")
|
46
46
|
# or
|
47
|
-
|
47
|
+
device = RubySpark::Device.new("device_device_id", "spark_api_access_token")
|
48
48
|
```
|
49
49
|
|
50
50
|
Fire away:
|
51
51
|
|
52
52
|
```ruby
|
53
|
-
|
53
|
+
device.info #=> { info hash }
|
54
54
|
|
55
|
-
|
56
|
-
|
55
|
+
device.variable("something") #=> number (for now)
|
56
|
+
device.function("foo", "argument") #=> number
|
57
57
|
```
|
58
58
|
|
59
59
|
### Tinker API
|
60
60
|
|
61
|
-
The tinker class provides `digital_read`, `digital_write`, `analog_read`, and `analog_write` for the default spark
|
61
|
+
The tinker class provides `digital_read`, `digital_write`, `analog_read`, and `analog_write` for the default spark device code. This is the same interface as the tinker app.
|
62
62
|
|
63
63
|
```ruby
|
64
|
-
|
64
|
+
device = RubySpark::Tinker.new("device_device_id")
|
65
65
|
# or
|
66
|
-
|
66
|
+
device = RubySpark::Tinker.new("device_device_id", "spark_api_access_token")
|
67
67
|
```
|
68
68
|
|
69
69
|
Fire away:
|
70
70
|
|
71
71
|
```ruby
|
72
|
-
|
72
|
+
device.info #=> { info hash }
|
73
73
|
|
74
|
-
|
75
|
-
|
74
|
+
device.digital_write(3, "HIGH") #=> true or false
|
75
|
+
device.digital_read(5) #=> "HIGH" or "LOW"
|
76
76
|
```
|
77
77
|
|
78
78
|
## Contributing
|
79
79
|
|
80
80
|
Happily accepting contributions. To contribute, fork, develop, add some specs, and pull request.
|
81
81
|
|
82
|
-
Note about the specs. All API requests make use of the [VCR](https://github.com/vcr/vcr) gem. To contribute without exposing your Access Token and
|
82
|
+
Note about the specs. All API requests make use of the [VCR](https://github.com/vcr/vcr) gem. To contribute without exposing your Access Token and Device ID, run the specs with your real authentication, and then find-and-replace your Access Token and Device ID with fake values in the spec and any VCR cassettes.
|
data/examples/tinker_example.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
require "ruby_spark"
|
3
3
|
|
4
|
-
|
4
|
+
device = RubySpark::Tinker.new(ARGV[0], ARGV[1])
|
5
5
|
|
6
|
-
p
|
6
|
+
p device.info
|
7
7
|
|
8
8
|
while true do
|
9
|
-
p
|
9
|
+
p device.digital_write("6", ["HIGH", "LOW"].sample)
|
10
10
|
sleep(3)
|
11
11
|
end
|
data/lib/ruby_spark.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module RubySpark
|
2
2
|
|
3
|
-
class
|
3
|
+
class Device
|
4
4
|
class ApiError < StandardError; end
|
5
5
|
|
6
|
-
def initialize(
|
6
|
+
def initialize(device_id, access_token = RubySpark.access_token)
|
7
7
|
raise RubySpark::ConfigurationError.new("Access Token not defined") if access_token.nil?
|
8
8
|
|
9
9
|
@access_token = access_token
|
10
|
-
@
|
10
|
+
@device_id = device_id
|
11
11
|
end
|
12
12
|
|
13
13
|
def info
|
@@ -59,12 +59,12 @@ module RubySpark
|
|
59
59
|
response["error"].tap do |error|
|
60
60
|
description = response["error_description"]
|
61
61
|
error.concat(": #{description}") if description
|
62
|
-
error.concat(": Invalid
|
62
|
+
error.concat(": Invalid Device ID") if error == "Permission Denied"
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
def base_url
|
67
|
-
"https://api.particle.io/v1/devices/#{@
|
67
|
+
"https://api.particle.io/v1/devices/#{@device_id}/"
|
68
68
|
end
|
69
69
|
|
70
70
|
def access_params
|
data/lib/ruby_spark/tinker.rb
CHANGED
data/lib/ruby_spark/version.rb
CHANGED
data/ruby_spark.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/analogread
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: access_token=good_access_token¶ms=A6
|
@@ -30,8 +30,8 @@ http_interactions:
|
|
30
30
|
encoding: UTF-8
|
31
31
|
string: |-
|
32
32
|
{
|
33
|
-
"id": "
|
34
|
-
"name": "First
|
33
|
+
"id": "good_device_id",
|
34
|
+
"name": "First Device",
|
35
35
|
"last_app": null,
|
36
36
|
"connected": true,
|
37
37
|
"return_value": 2399
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/analogwrite
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: access_token=good_access_token¶ms=A7%2C130
|
@@ -30,8 +30,8 @@ http_interactions:
|
|
30
30
|
encoding: UTF-8
|
31
31
|
string: |-
|
32
32
|
{
|
33
|
-
"id": "
|
34
|
-
"name": "First
|
33
|
+
"id": "good_device_id",
|
34
|
+
"name": "First Device",
|
35
35
|
"last_app": null,
|
36
36
|
"connected": true,
|
37
37
|
"return_value": 1
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/digitalread
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: access_token=good_access_token¶ms=D6
|
@@ -30,8 +30,8 @@ http_interactions:
|
|
30
30
|
encoding: UTF-8
|
31
31
|
string: |-
|
32
32
|
{
|
33
|
-
"id": "
|
34
|
-
"name": "First
|
33
|
+
"id": "good_device_id",
|
34
|
+
"name": "First Device",
|
35
35
|
"last_app": null,
|
36
36
|
"connected": true,
|
37
37
|
"return_value": 1
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/digitalwrite
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: access_token=good_access_token¶ms=D7%2CHIGH
|
@@ -30,8 +30,8 @@ http_interactions:
|
|
30
30
|
encoding: UTF-8
|
31
31
|
string: |-
|
32
32
|
{
|
33
|
-
"id": "
|
34
|
-
"name": "First
|
33
|
+
"id": "good_device_id",
|
34
|
+
"name": "First Device",
|
35
35
|
"last_app": null,
|
36
36
|
"connected": true,
|
37
37
|
"return_value": 1
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/readTemp
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: access_token=good_access_token¶ms=outside
|
@@ -28,7 +28,7 @@ http_interactions:
|
|
28
28
|
- keep-alive
|
29
29
|
body:
|
30
30
|
encoding: US-ASCII
|
31
|
-
string: ! "{\n \"id\": \"
|
31
|
+
string: ! "{\n \"id\": \"good_device_id\",\n \"name\": \"chippy\",\n
|
32
32
|
\ \"last_app\": null,\n \"connected\": true,\n \"return_value\": 72\n}"
|
33
33
|
http_version:
|
34
34
|
recorded_at: Thu, 20 Feb 2014 21:45:09 GMT
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/?access_token=good_access_token
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -28,7 +28,7 @@ http_interactions:
|
|
28
28
|
- keep-alive
|
29
29
|
body:
|
30
30
|
encoding: US-ASCII
|
31
|
-
string: ! "{\n \"id\": \"
|
31
|
+
string: ! "{\n \"id\": \"good_device_id\",\n \"name\": \"chippy\",\n
|
32
32
|
\ \"variables\": {\n \"temperature\": \"int32\"\n },\n \"functions\":
|
33
33
|
[\n \"readTemp\"\n ]\n}"
|
34
34
|
http_version:
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: https://api.particle.io/v1/devices/
|
5
|
+
uri: https://api.particle.io/v1/devices/good_device_id/temperature?access_token=good_access_token
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -29,8 +29,8 @@ http_interactions:
|
|
29
29
|
body:
|
30
30
|
encoding: US-ASCII
|
31
31
|
string: ! "{\n \"cmd\": \"VarReturn\",\n \"name\": \"temperature\",\n \"result\":
|
32
|
-
70,\n \"
|
33
|
-
\ \"connected\": true,\n \"deviceID\": \"
|
32
|
+
70,\n \"deviceInfo\": {\n \"last_app\": \"\",\n \"last_heard\": \"2014-02-20T21:44:49.566Z\",\n
|
33
|
+
\ \"connected\": true,\n \"deviceID\": \"good_device_id\"\n
|
34
34
|
\ }\n}"
|
35
35
|
http_version:
|
36
36
|
recorded_at: Thu, 20 Feb 2014 21:44:49 GMT
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'pry'
|
3
3
|
|
4
|
-
describe RubySpark::
|
4
|
+
describe RubySpark::Device do
|
5
5
|
|
6
6
|
context "when things go right" do
|
7
7
|
before { RubySpark.access_token = "good_access_token" }
|
8
|
-
subject { described_class.new("
|
8
|
+
subject { described_class.new("good_device_id") }
|
9
9
|
|
10
10
|
describe "#info" do
|
11
|
-
it "succeeds when Access Token and
|
11
|
+
it "succeeds when Access Token and Device ID are correct" do
|
12
12
|
VCR.use_cassette("info") do
|
13
13
|
info = subject.info
|
14
14
|
|
@@ -19,7 +19,7 @@ describe RubySpark::Core do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "#variable" do
|
22
|
-
it "succeeds when Access Token and
|
22
|
+
it "succeeds when Access Token and Device ID are correct" do
|
23
23
|
VCR.use_cassette("variable") do
|
24
24
|
subject.variable("temperature").should == 70
|
25
25
|
end
|
@@ -27,7 +27,7 @@ describe RubySpark::Core do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "#function" do
|
30
|
-
it "succeeds when Access Token and
|
30
|
+
it "succeeds when Access Token and Device ID are correct" do
|
31
31
|
VCR.use_cassette("function") do
|
32
32
|
subject.function("readTemp", "outside").should == 72
|
33
33
|
end
|
@@ -38,12 +38,12 @@ describe RubySpark::Core do
|
|
38
38
|
context "when things go wrong" do
|
39
39
|
it "returns the appropriate error when Access Token is bad" do
|
40
40
|
RubySpark.access_token = "bad_token"
|
41
|
-
subject = described_class.new("
|
41
|
+
subject = described_class.new("good_device_id")
|
42
42
|
|
43
43
|
VCR.use_cassette("bad_token") do
|
44
44
|
expect {
|
45
45
|
subject.info
|
46
|
-
}.to raise_error(RubySpark::
|
46
|
+
}.to raise_error(RubySpark::Device::ApiError)
|
47
47
|
end
|
48
48
|
|
49
49
|
VCR.use_cassette("bad_token") do
|
@@ -59,37 +59,37 @@ describe RubySpark::Core do
|
|
59
59
|
RubySpark.access_token = nil
|
60
60
|
|
61
61
|
expect {
|
62
|
-
subject = described_class.new("
|
62
|
+
subject = described_class.new("good_device_id")
|
63
63
|
}.to raise_error(RubySpark::ConfigurationError)
|
64
64
|
end
|
65
65
|
|
66
|
-
it "returns the appropriate error when
|
66
|
+
it "returns the appropriate error when Device ID is bad" do
|
67
67
|
RubySpark.access_token = "good_access_token"
|
68
|
-
subject = described_class.new("
|
68
|
+
subject = described_class.new("bad_device_id")
|
69
69
|
|
70
|
-
VCR.use_cassette("
|
70
|
+
VCR.use_cassette("bad_device_id") do
|
71
71
|
expect {
|
72
72
|
subject.info
|
73
|
-
}.to raise_error(RubySpark::
|
73
|
+
}.to raise_error(RubySpark::Device::ApiError)
|
74
74
|
end
|
75
75
|
|
76
|
-
VCR.use_cassette("
|
76
|
+
VCR.use_cassette("bad_device_id") do
|
77
77
|
begin
|
78
78
|
subject.info
|
79
79
|
rescue => e
|
80
|
-
e.message.should == "Permission Denied: Invalid
|
80
|
+
e.message.should == "Permission Denied: Invalid Device ID"
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
85
|
it "returns the appropriate error when the Particle API times out" do
|
86
86
|
RubySpark.access_token = "good_access_token"
|
87
|
-
subject = described_class.new("
|
87
|
+
subject = described_class.new("good_device_id")
|
88
88
|
|
89
89
|
VCR.use_cassette("spark_timeout") do
|
90
90
|
expect {
|
91
91
|
subject.info
|
92
|
-
}.to raise_error(RubySpark::
|
92
|
+
}.to raise_error(RubySpark::Device::ApiError)
|
93
93
|
end
|
94
94
|
|
95
95
|
VCR.use_cassette("spark_timeout") do
|
data/spec/spark/tinker_spec.rb
CHANGED
@@ -5,10 +5,10 @@ describe RubySpark::Tinker do
|
|
5
5
|
|
6
6
|
context "with Access Token set in config variable" do
|
7
7
|
before { RubySpark.access_token = "good_access_token" }
|
8
|
-
subject { described_class.new("
|
8
|
+
subject { described_class.new("good_device_id") }
|
9
9
|
|
10
10
|
describe "#digital_write" do
|
11
|
-
it "succeeds when Access Token and
|
11
|
+
it "succeeds when Access Token and Device ID are correct" do
|
12
12
|
VCR.use_cassette("digital_write") do
|
13
13
|
subject.digital_write(7, "HIGH").should == true
|
14
14
|
end
|
@@ -16,7 +16,7 @@ describe RubySpark::Tinker do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "#digital_read" do
|
19
|
-
it "succeeds when Access Token and
|
19
|
+
it "succeeds when Access Token and Device ID are correct" do
|
20
20
|
VCR.use_cassette("digital_read") do
|
21
21
|
subject.digital_read(6).should == "HIGH"
|
22
22
|
end
|
@@ -24,7 +24,7 @@ describe RubySpark::Tinker do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#analog_write" do
|
27
|
-
it "succeeds when Access Token and
|
27
|
+
it "succeeds when Access Token and Device ID are correct" do
|
28
28
|
VCR.use_cassette("analog_write") do
|
29
29
|
subject.analog_write(7, 130).should == true
|
30
30
|
end
|
@@ -32,7 +32,7 @@ describe RubySpark::Tinker do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "#analog_read" do
|
35
|
-
it "succeeds when Access Token and
|
35
|
+
it "succeeds when Access Token and Device ID are correct" do
|
36
36
|
VCR.use_cassette("analog_read") do
|
37
37
|
subject.analog_read(6).should == 2399
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_spark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Fatsi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -120,17 +120,17 @@ files:
|
|
120
120
|
- LICENSE.txt
|
121
121
|
- README.md
|
122
122
|
- Rakefile
|
123
|
-
- examples/
|
123
|
+
- examples/device_example.rb
|
124
124
|
- examples/tinker_example.rb
|
125
125
|
- lib/helpers/configuration.rb
|
126
126
|
- lib/ruby_spark.rb
|
127
|
-
- lib/ruby_spark/
|
127
|
+
- lib/ruby_spark/device.rb
|
128
128
|
- lib/ruby_spark/tinker.rb
|
129
129
|
- lib/ruby_spark/version.rb
|
130
130
|
- ruby_spark.gemspec
|
131
131
|
- spec/fixtures/vcr_cassettes/analog_read.yml
|
132
132
|
- spec/fixtures/vcr_cassettes/analog_write.yml
|
133
|
-
- spec/fixtures/vcr_cassettes/
|
133
|
+
- spec/fixtures/vcr_cassettes/bad_device_id.yml
|
134
134
|
- spec/fixtures/vcr_cassettes/bad_token.yml
|
135
135
|
- spec/fixtures/vcr_cassettes/digital_read.yml
|
136
136
|
- spec/fixtures/vcr_cassettes/digital_write.yml
|
@@ -138,7 +138,7 @@ files:
|
|
138
138
|
- spec/fixtures/vcr_cassettes/info.yml
|
139
139
|
- spec/fixtures/vcr_cassettes/spark_timeout.yml
|
140
140
|
- spec/fixtures/vcr_cassettes/variable.yml
|
141
|
-
- spec/spark/
|
141
|
+
- spec/spark/device_spec.rb
|
142
142
|
- spec/spark/tinker_spec.rb
|
143
143
|
- spec/spec_helper.rb
|
144
144
|
homepage: http://github.com/efatsi/ruby_spark
|
@@ -168,7 +168,7 @@ summary: Ruby Gem to make API calls to the Particle Cloud
|
|
168
168
|
test_files:
|
169
169
|
- spec/fixtures/vcr_cassettes/analog_read.yml
|
170
170
|
- spec/fixtures/vcr_cassettes/analog_write.yml
|
171
|
-
- spec/fixtures/vcr_cassettes/
|
171
|
+
- spec/fixtures/vcr_cassettes/bad_device_id.yml
|
172
172
|
- spec/fixtures/vcr_cassettes/bad_token.yml
|
173
173
|
- spec/fixtures/vcr_cassettes/digital_read.yml
|
174
174
|
- spec/fixtures/vcr_cassettes/digital_write.yml
|
@@ -176,6 +176,6 @@ test_files:
|
|
176
176
|
- spec/fixtures/vcr_cassettes/info.yml
|
177
177
|
- spec/fixtures/vcr_cassettes/spark_timeout.yml
|
178
178
|
- spec/fixtures/vcr_cassettes/variable.yml
|
179
|
-
- spec/spark/
|
179
|
+
- spec/spark/device_spec.rb
|
180
180
|
- spec/spark/tinker_spec.rb
|
181
181
|
- spec/spec_helper.rb
|