jupyter_on_rails 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +2 -0
- data/CHANGELOG.md +3 -0
- data/README.md +2 -1
- data/jupyter_on_rails.gemspec +4 -5
- data/lib/jupyter_on_rails/daru/active_record_ext.rb +15 -0
- data/lib/jupyter_on_rails/daru/data_frame_ext.rb +21 -3
- data/lib/jupyter_on_rails/iruby_kernel_extention.rb +1 -1
- data/lib/jupyter_on_rails/railtie/jupyter.rake +3 -3
- data/lib/jupyter_on_rails/version.rb +1 -1
- metadata +13 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b770fb766b3166356d90236e096219f1813db9335fe51bdbe6fec4ec40a5f03
|
4
|
+
data.tar.gz: 4b87ac90a2fd6bea134c5b2a7a71e136280a3210d6602ef8407a03365fd8edab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 277d7e526c9cbb7ef6b6baf2ac4171e714878fa3b2b2608c3bf1bce1aaa4ddf0b6fc52c94dd2715c7fabc244d1b52a4f483926e1a073a251c98125c2b1cfe00b
|
7
|
+
data.tar.gz: 789d5abb172385ee727f05d037be94377bf3bce09824831117ec6c1a1758632faeb5caa81e4a433f45a1d31fde122aea3df9982ab425426374e82d12e36dcac0
|
data/.github/FUNDING.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.5.2](https://github.com/Yuki-Inoue/jupyter_on_rails/tree/v0.5.2) (2019-03-09)
|
4
|
+
[Full Changelog](https://github.com/Yuki-Inoue/jupyter_on_rails/compare/v0.5.1...v0.5.2)
|
5
|
+
|
3
6
|
## [v0.5.1](https://github.com/Yuki-Inoue/jupyter_on_rails/tree/v0.5.1) (2019-03-09)
|
4
7
|
[Full Changelog](https://github.com/Yuki-Inoue/jupyter_on_rails/compare/v0.5.0...v0.5.1)
|
5
8
|
|
data/README.md
CHANGED
@@ -67,7 +67,8 @@ User.to_df # => Daru::DataFrame is returned
|
|
67
67
|
### Daru::DataFrame#write_model
|
68
68
|
|
69
69
|
For each row, call `to_h` and pass it to `model.new`.
|
70
|
-
And then, imports them using `model.import
|
70
|
+
And then, imports them using `model.insert_all` on Rails >= 6, or `model.import` (requires adding
|
71
|
+
`activerecord-import` to your `Gemfile`).
|
71
72
|
|
72
73
|
```ruby
|
73
74
|
df.write_model(User)
|
data/jupyter_on_rails.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["inoueyuworks@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Integrate jupyter into rails}
|
13
|
-
spec.description = %q{
|
13
|
+
spec.description = %q{Utilities for integrating jupyter and rails.}
|
14
14
|
spec.homepage = "https://github.com/Yuki-Inoue/jupyter_on_rails"
|
15
15
|
|
16
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
@@ -31,19 +31,18 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
32
32
|
`git ls-files -z`.split("\x0")
|
33
33
|
.reject { |f| f.match(%r{^(test|spec|features)/}) }
|
34
|
-
.reject { |f| f.match(
|
34
|
+
.reject { |f| f.match(/\.png$/) }
|
35
35
|
end
|
36
36
|
spec.bindir = "exe"
|
37
37
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
38
38
|
spec.require_paths = ["lib"]
|
39
39
|
|
40
|
-
spec.add_development_dependency "
|
41
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
40
|
+
spec.add_development_dependency "rake"
|
42
41
|
spec.add_development_dependency 'github_changelog_generator'
|
42
|
+
spec.add_development_dependency 'bump'
|
43
43
|
|
44
44
|
spec.add_dependency 'iruby'
|
45
45
|
spec.add_dependency 'railties'
|
46
46
|
|
47
|
-
spec.add_dependency 'activerecord-import'
|
48
47
|
spec.add_dependency 'daru'
|
49
48
|
end
|
@@ -5,6 +5,17 @@ module JupyterOnRails
|
|
5
5
|
module ActiveRecordExt
|
6
6
|
extend ::ActiveSupport::Concern
|
7
7
|
|
8
|
+
# Rails 4.0 support
|
9
|
+
unless respond_to?(:class_methods)
|
10
|
+
def self.class_methods(&class_methods_module_definition)
|
11
|
+
mod = const_defined?(:ClassMethods, false) ?
|
12
|
+
const_get(:ClassMethods) :
|
13
|
+
const_set(:ClassMethods, Module.new)
|
14
|
+
|
15
|
+
mod.module_eval(&class_methods_module_definition)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
8
19
|
class_methods do
|
9
20
|
def to_df
|
10
21
|
relation = all
|
@@ -34,6 +45,10 @@ module JupyterOnRails
|
|
34
45
|
::Daru::DataFrame.new(datas)
|
35
46
|
end
|
36
47
|
end
|
48
|
+
|
49
|
+
def to_df
|
50
|
+
::Daru::DataFrame.new([attributes])
|
51
|
+
end
|
37
52
|
end
|
38
53
|
end
|
39
54
|
end
|
@@ -2,10 +2,28 @@ module JupyterOnRails
|
|
2
2
|
module Daru
|
3
3
|
module DataFrameExt
|
4
4
|
def write_model(model)
|
5
|
-
|
5
|
+
if ActiveRecord.version >= Gem::Version.new('6.0.0.beta1')
|
6
|
+
write_model_rails(model)
|
7
|
+
else
|
8
|
+
write_model_activerecord_import(model)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def write_model_activerecord_import(model)
|
15
|
+
begin
|
16
|
+
require 'activerecord-import'
|
17
|
+
rescue LoadError
|
18
|
+
raise 'write_model requires either Rails >= 6 or the activerecord-import gem'
|
19
|
+
end
|
20
|
+
|
21
|
+
records = map_rows(&:to_h).map(&model.method(:new))
|
22
|
+
model.import(records)
|
23
|
+
end
|
6
24
|
|
7
|
-
|
8
|
-
model.
|
25
|
+
def write_model_rails(model)
|
26
|
+
model.insert_all(map_rows(&:to_h))
|
9
27
|
end
|
10
28
|
end
|
11
29
|
end
|
@@ -8,7 +8,7 @@ module JupyterOnRails
|
|
8
8
|
original = Dir.pwd
|
9
9
|
root = IRubyKernelExtention.root
|
10
10
|
Dir.chdir root
|
11
|
-
app_file = File.expand_path('config/
|
11
|
+
app_file = File.expand_path('config/environment.rb', root)
|
12
12
|
require app_file
|
13
13
|
Rails.application.require_environment!
|
14
14
|
Dir.chdir original
|
@@ -5,10 +5,10 @@ namespace :jupyter do
|
|
5
5
|
desc 'start jupyter notebook'
|
6
6
|
task :notebook do
|
7
7
|
root = Rails.root
|
8
|
-
ipython_dir = ENV['IPYTHONDIR'] || root / '.ipython'
|
8
|
+
ipython_dir = ENV['JUPYTER_DATA_DIR'] || ENV['IPYTHONDIR'] || root / '.ipython'
|
9
9
|
ipython_dir = File.absolute_path(ipython_dir.to_s)
|
10
10
|
|
11
|
-
sh "
|
11
|
+
sh "JUPYTER_DATA_DIR=#{Shellwords.shellescape(ipython_dir.to_s)} bundle exec iruby register --force"
|
12
12
|
|
13
13
|
sh "rm -rf #{Shellwords.shellescape(ipython_dir.to_s)}/kernels/rails"
|
14
14
|
sh "cp -r #{Shellwords.shellescape(ipython_dir.to_s)}/kernels/ruby #{Shellwords.shellescape(ipython_dir.to_s)}/kernels/rails"
|
@@ -22,7 +22,7 @@ namespace :jupyter do
|
|
22
22
|
|
23
23
|
File.write(kernel_file, JSON.dump(kernel_h))
|
24
24
|
|
25
|
-
env = { '
|
25
|
+
env = { 'JUPYTER_DATA_DIR' => ipython_dir.to_s }
|
26
26
|
commands = %w[jupyter notebook]
|
27
27
|
commands = %w[pipenv run] + commands if (root / 'Pipfile').exist?
|
28
28
|
Process.exec(env, *commands)
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jupyter_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuki INOUE
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.17'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.17'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
19
|
+
version: '0'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: github_changelog_generator
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,13 +39,13 @@ dependencies:
|
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: bump
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
|
-
type: :
|
48
|
+
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
@@ -67,7 +53,7 @@ dependencies:
|
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
56
|
+
name: iruby
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
@@ -81,7 +67,7 @@ dependencies:
|
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
70
|
+
name: railties
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - ">="
|
@@ -108,14 +94,14 @@ dependencies:
|
|
108
94
|
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
|
-
description:
|
112
|
-
project."
|
97
|
+
description: Utilities for integrating jupyter and rails.
|
113
98
|
email:
|
114
99
|
- inoueyuworks@gmail.com
|
115
100
|
executables: []
|
116
101
|
extensions: []
|
117
102
|
extra_rdoc_files: []
|
118
103
|
files:
|
104
|
+
- ".github/FUNDING.yml"
|
119
105
|
- ".gitignore"
|
120
106
|
- CHANGELOG.md
|
121
107
|
- Gemfile
|
@@ -153,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
139
|
- !ruby/object:Gem::Version
|
154
140
|
version: '0'
|
155
141
|
requirements: []
|
156
|
-
|
157
|
-
rubygems_version: 2.7.6
|
142
|
+
rubygems_version: 3.1.2
|
158
143
|
signing_key:
|
159
144
|
specification_version: 4
|
160
145
|
summary: Integrate jupyter into rails
|