rubyuno 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +88 -0
- data/ext/rubyuno/rubyuno.hxx +1 -1
- data/ext/rubyuno/runtime.cxx +3 -3
- data/lib/rubyuno/version.rb +1 -1
- metadata +3 -3
- data/README +0 -46
data/README.md
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# rubyuno
|
2
|
+
|
3
|
+
rubyuno is a Ruby-UNO (Universal Network Object; ['ju:nou]) bridge. UNO is used to
|
4
|
+
construct OpenOffice.org so that you can play with the office. Rubyuno
|
5
|
+
is implemented as Ruby extension library written in C++, but the bridge
|
6
|
+
is not so fast because value conversion and multiple API call consume time.
|
7
|
+
Rubyuno is not well suited for task like template creation; generating ODF (Open
|
8
|
+
Document Format) files is a better option.
|
9
|
+
|
10
|
+
rubyuno is a fork of [RUNO](https://github.com/hanya/RUNO), converted into a gem so that the extensions do not need to be compiled manually. However, it has not been tested on a wide variety of platforms. If you encounter compilation difficulties and are able to resolve them, please create a pull request so that we can get this working on as many platforms as possible!
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
gem 'rubyuno'
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
$ bundle
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
|
24
|
+
$ gem install rubyuno
|
25
|
+
|
26
|
+
### Pre-requisites
|
27
|
+
In order for rubyuno to compile, the following must already be installed on the system:
|
28
|
+
|
29
|
+
* OpenOffice.org and OpenOffice.org SDK (tested with version 3.4).
|
30
|
+
|
31
|
+
The SDK will need to be set up after installation. In order to do this, `configure.pl` within
|
32
|
+
the SDK's installation directory (eg. /opt/openoffice.org/basis3.4/sdk) needs to be run. This
|
33
|
+
will create an SDK directory within the current user's home directory (the script has an
|
34
|
+
option to change the installation directory but seems to not work) with some shell scripts.
|
35
|
+
|
36
|
+
The shell scripts will be named something like <code>setsdkenv_*env*.*ext*</code>, where `env`
|
37
|
+
is your server environment and `ext` is a shell type (ie. `setsdkenv_unix.sh`).
|
38
|
+
Please read the SDK documentation for more information.
|
39
|
+
|
40
|
+
* Ruby 1.9 and its headers (you may need to compile Ruby with the `--enable-shared` flag)
|
41
|
+
|
42
|
+
### Environment variables
|
43
|
+
In addition to the SDK's environment variable set up script (as mentioned above), rubyuno needs two
|
44
|
+
environment variables to function correctly.
|
45
|
+
|
46
|
+
* `LD_LIBRARY_PATH` (for Linux or UNIX) or `PATH` (for Windows)
|
47
|
+
|
48
|
+
Used to find libraries of UNO (or OpenOffice.org). Should be setup by the `setsdkenv` script.
|
49
|
+
|
50
|
+
* `URE_BOOTSTRAP`
|
51
|
+
|
52
|
+
Specifies fundamental(rc|.ini) file with vnd.sun.star.pathname protocol.
|
53
|
+
|
54
|
+
You may wish to update your `/etc/profile` or the like with the following to automatically set these up:
|
55
|
+
|
56
|
+
. ~/openoffice.org3.4_sdk/$(hostname)/setsdkenv_unix.sh >/dev/null
|
57
|
+
export URE_BOOTSTRAP="vnd.sun.star.pathname:$OFFICE_PROGRAM_PATH/fundamentalrc"
|
58
|
+
|
59
|
+
## Usage
|
60
|
+
|
61
|
+
OpenOffice must be running as a service first in order to interact with it (rubyuno uses port 2083 by default):
|
62
|
+
|
63
|
+
soffice -headless -nologo -nofirststartwizard - accept="socket,host=localhost,port=2083;urp;StarOffice.ServiceManager"
|
64
|
+
|
65
|
+
Once it is running, you can connect to it from ruby:
|
66
|
+
|
67
|
+
require 'rubyuno'
|
68
|
+
ctx = Uno::Connector.bootstrap
|
69
|
+
smgr = ctx.getServiceManager
|
70
|
+
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
|
71
|
+
doc = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, [])
|
72
|
+
doc.getText.setString("Hello from Ruby!")
|
73
|
+
|
74
|
+
### Common Errors & Resolutions
|
75
|
+
|
76
|
+
#### LoadError: cannot open shared object file
|
77
|
+
|
78
|
+
LoadError: libuno_cppuhelpergcc3.so.3: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/gems/1.9.1/gems/rubyuno-0.3.0/lib/rubyuno/rubyuno.so
|
79
|
+
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
|
80
|
+
|
81
|
+
`$LD_LIBRARY_PATH` environment variable is not set up correctly. Ensure it contains `$OO_SDK_URE_HOME/lib`.
|
82
|
+
|
83
|
+
#### TypeError: wrong argument type Rubyuno::Com::Sun::Star::Connection::NoConnectException from <code>Uno::Connector.bootstrap</code>
|
84
|
+
`soffice` is either not running as a service or is its `-accept` option parameters do not match the arguments to `Uno::Connector.bootstrap`. Ensure the port is correct.
|
85
|
+
|
86
|
+
#### Binary URP bridge disposed during call
|
87
|
+
|
88
|
+
`$URE_BOOTSTRAP` environment variable is not set up correctly. Ensure it points to the `fundamentalrc` or `fundamental.ini` file with the `vnd.sun.star.pathname protocol` protocol.
|
data/ext/rubyuno/rubyuno.hxx
CHANGED
@@ -192,7 +192,7 @@ public:
|
|
192
192
|
|
193
193
|
VALUE any_to_VALUE(const com::sun::star::uno::Any &a) const throw (com::sun::star::uno::RuntimeException);
|
194
194
|
com::sun::star::uno::Any value_to_any(VALUE value) const throw (com::sun::star::uno::RuntimeException);
|
195
|
-
com::sun::star::uno::Sequence< com::sun::star::uno::Type > getTypes(const Runtime &runtime, VALUE *value)
|
195
|
+
static com::sun::star::uno::Sequence< com::sun::star::uno::Type > getTypes(const Runtime &runtime, VALUE *value);
|
196
196
|
};
|
197
197
|
|
198
198
|
|
data/ext/rubyuno/runtime.cxx
CHANGED
@@ -123,14 +123,14 @@ void Runtime::initialize(const Reference< XComponentContext > &ctx) throw (Runti
|
|
123
123
|
}
|
124
124
|
|
125
125
|
|
126
|
-
|
127
|
-
getTypes(const Runtime &runtime, VALUE *value)
|
126
|
+
Sequence< Type >
|
127
|
+
Runtime::getTypes(const Runtime &runtime, VALUE *value)
|
128
128
|
{
|
129
129
|
Sequence< Type > ret;
|
130
130
|
ID id = rb_intern("getTypes");
|
131
131
|
|
132
132
|
if (! rb_respond_to(*value, id))
|
133
|
-
rb_raise(rb_eArgError, "illegal argument does not support com.sun.star.lang.XTypeProvider interface");
|
133
|
+
rb_raise(rb_eArgError, "illegal argument does not support com.sun.star.lang.XTypeProvider interface (%s)", value);
|
134
134
|
VALUE types = rb_funcall(*value, id, 0);
|
135
135
|
|
136
136
|
long size = RARRAY_LEN(types);
|
data/lib/rubyuno/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyuno
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-07-
|
13
|
+
date: 2012-07-07 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Ruby-OpenOffice UNO native bridge
|
16
16
|
email:
|
@@ -25,7 +25,7 @@ files:
|
|
25
25
|
- CHANGES
|
26
26
|
- Gemfile
|
27
27
|
- LICENSE
|
28
|
-
- README
|
28
|
+
- README.md
|
29
29
|
- Rakefile
|
30
30
|
- doc/Rakefile
|
31
31
|
- doc/index.rd
|
data/README
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
|
2
|
-
= RUNO
|
3
|
-
|
4
|
-
RUNO is a Ruby-UNO ['ju:nou] (Universal Network Object) bridge. UNO is used to
|
5
|
-
construct OpenOffice.org so that you can play with the office. RUNO
|
6
|
-
is implemented as Ruby extension library written in C++, but the bridge
|
7
|
-
is not so fast because value conversion and multiple API call consume time.
|
8
|
-
RUNO is not suite task like template creation, generating ODF (Open
|
9
|
-
Document Format) is better for the task.
|
10
|
-
|
11
|
-
|
12
|
-
= How to Compile
|
13
|
-
You need following things to compile:
|
14
|
-
* OpenOffice.org and OpenOffice.org SDK (3.x?)
|
15
|
-
* Ruby (> 1.8.7?) and its header
|
16
|
-
|
17
|
-
Package version is not well checked.
|
18
|
-
|
19
|
-
Install OpenOffice.org and SDK. And then setup the SDK with configure.pl
|
20
|
-
script equipped in the SDK. After that you can find shell script named
|
21
|
-
"setsdkenv_ENV.EXT" to set environmet variables for compilation in the
|
22
|
-
~/openoffice.orgVERSION_sdk/HOST.DOMAIN directory. The directory and file
|
23
|
-
name is system dependent, please read SDK documentation.
|
24
|
-
|
25
|
-
For example, compilation procedure is like the following:
|
26
|
-
> . ~/openoffice.org3.2_sdk/localhost/localdomain/setsdkenv_unix.sh
|
27
|
-
> ruby extconf.rb
|
28
|
-
> make
|
29
|
-
> make site-install
|
30
|
-
compilation is successfully finished, runo.so file is created.
|
31
|
-
|
32
|
-
Current version has problem to link against ruby library on Windows
|
33
|
-
environment. I couldn't fix it, investication required.
|
34
|
-
|
35
|
-
= Environment Variables
|
36
|
-
|
37
|
-
RUNO needs a few environmet variable settings befor to run work correctly.
|
38
|
-
|
39
|
-
* LD_LIBRARY_PATH (for Linux or UNIX) or PATH (for Windows)
|
40
|
-
To find libraries of UNO (or OpenOffice.org).
|
41
|
-
|
42
|
-
* URE_BOOTSTRAP
|
43
|
-
Specifies fundamental(rc|.ini) file with vnd.sun.star.pathname protocol.
|
44
|
-
e.g. vnd.sun.star.pathname:/opt/ooo-dev3/program/fundamentalrc
|
45
|
-
|
46
|
-
|