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 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