jupyter_on_rails 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|