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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c7984b62f5b12bf1d298c0cdbafa8f1d9fd170a906021a8f60f93c66fc76a90
4
- data.tar.gz: f5171d706b598ba6d64b530b023ef3ae99fdb02412dc9e4b5c12718f6797acc8
3
+ metadata.gz: 5b770fb766b3166356d90236e096219f1813db9335fe51bdbe6fec4ec40a5f03
4
+ data.tar.gz: 4b87ac90a2fd6bea134c5b2a7a71e136280a3210d6602ef8407a03365fd8edab
5
5
  SHA512:
6
- metadata.gz: d7af13eea9bcf82b4737e15c335689046058f03718873085a69855f69f951af5aa17447fef78b99c741caacf5683265c63c92fbc016c0ef31ce7054b3b8d7588
7
- data.tar.gz: b229902d6cc28b77064cf271cd2d078a0e3956c9ad8ecf8f2f1f35366562d7039b0cf009ea06ff9be1da385afc63719f6418b8af60c39eb6297beae618a92449
6
+ metadata.gz: 277d7e526c9cbb7ef6b6baf2ac4171e714878fa3b2b2608c3bf1bce1aaa4ddf0b6fc52c94dd2715c7fabc244d1b52a4f483926e1a073a251c98125c2b1cfe00b
7
+ data.tar.gz: 789d5abb172385ee727f05d037be94377bf3bce09824831117ec6c1a1758632faeb5caa81e4a433f45a1d31fde122aea3df9982ab425426374e82d12e36dcac0
@@ -0,0 +1,2 @@
1
+
2
+ issuehunt: yuki-inoue
@@ -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)
@@ -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{`rails jupyter:notebook` to open jupyter with rails app kernel of your project.}
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(%r{.png$}) }
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 "bundler", "~> 1.17"
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
- require 'activerecord-import'
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
- objs = map_rows(&:to_h).map(&model.method(:new))
8
- model.import(objs)
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/application.rb', root)
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 "bundle exec iruby register --force --ipython-dir=#{Shellwords.shellescape(ipython_dir.to_s)}"
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 = { 'IPYTHONDIR' => ipython_dir.to_s }
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)
@@ -1,3 +1,3 @@
1
1
  module JupyterOnRails
2
- VERSION = '0.5.2'
2
+ VERSION = '0.6.0'
3
3
  end
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.5.2
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: 2019-03-09 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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: iruby
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: :runtime
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: railties
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: activerecord-import
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: "`rails jupyter:notebook` to open jupyter with rails app kernel of your
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
- rubyforge_project:
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