Class: OCI8::BFILE
Overview
This class is a ruby-side class of Oracle BFILE datatype. It is a read-only LOB. You cannot change the contents.
You can read files on the server-side as follows:
-
Connect to the Oracle server as a user who has CREATE DIRECTORY privilege.
# create a directory object on the Oracle server. CREATE DIRECTORY file_storage_dir AS '/opt/file_storage'; # grant a privilege to read files on file_storage_dir directory to a user. GRANT READ ON DIRECTORY file_storage_dir TO username;
-
Create a file ‘hello_world.txt’ in the directory ‘/opt/file_storage’ on the server filesystem.
echo 'Hello World!' > /opt/file_storage/hello_world.txt
-
Read the file by ruby-oci8.
require 'oci8' # The user must have 'READ ON DIRECTORY file_storage_dir' privilege. conn = OCI8.new('username/password') # The second argument is usually an uppercase string unless the directory # object is explicitly created as *double-quoted* lowercase characters. bfile = OCI8::BFILE.new(conn, 'FILE_STORAGE_DIR', 'hello_world.txt') bfile.read # => "Hello World!\n"
Instance Method Summary collapse
-
#dir_alias ⇒ String
Returns the directory object name.
-
#dir_alias=(dir_alias) ⇒ Object
Changes the directory object name.
-
#exists? ⇒ Boolean
Returns
true
when the BFILE exists on the server’s operating system. -
#filename ⇒ String
Returns the file name.
-
#filename=(filename) ⇒ Object
Changes the file name.
-
#initialize(conn, directory = nil, filename = nil) ⇒ OCI8::BFILE
constructor
Creates a BFILE object.
-
#size=(dummy) ⇒ Object
Raises
RuntimeError
always. -
#truncate(dummy) ⇒ Object
Raises
RuntimeError
always. -
#write(dummy) ⇒ Object
Raises
RuntimeError
always.
Methods inherited from LOB
#available?, #chunk_size, #close, #eof?, #pos, #read, #rewind, #seek, #size
Constructor Details
#initialize(conn, directory = nil, filename = nil) ⇒ OCI8::BFILE
952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 |
# File 'ext/oci8/lob.c', line 952
static VALUE oci8_bfile_initialize(int argc, VALUE *argv, VALUE self)
{
oci8_lob_t *lob = TO_LOB(self);
VALUE svc;
VALUE dir_alias;
VALUE filename;
oci8_svcctx_t *svcctx;
int rv;
rb_scan_args(argc, argv, "12", &svc, &dir_alias, &filename);
svcctx = oci8_get_svcctx(svc);
rv = OCIDescriptorAlloc(oci8_envhp, &lob->base.hp.ptr, OCI_DTYPE_LOB, 0, NULL);
if (rv != OCI_SUCCESS) {
oci8_env_raise(oci8_envhp, rv);
}
lob->base.type = OCI_DTYPE_LOB;
lob->pos = 0;
lob->csfrm = SQLCS_IMPLICIT;
lob->lobtype = OCI_TEMP_BLOB;
lob->state = S_BFILE_CLOSE;
if (argc != 1) {
OCI8SafeStringValue(dir_alias);
OCI8SafeStringValue(filename);
oci8_bfile_set_name(self, dir_alias, filename);
}
oci8_link_to_parent(&lob->base, &svcctx->base);
lob->svcctx = svcctx;
return Qnil;
}
|
Instance Method Details
#dir_alias ⇒ String
989 990 991 992 993 994 995 |
# File 'ext/oci8/lob.c', line 989
static VALUE oci8_bfile_get_dir_alias(VALUE self)
{
VALUE dir_alias;
oci8_bfile_get_name(self, &dir_alias, NULL);
return dir_alias;
}
|
#dir_alias=(dir_alias) ⇒ Object
1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 |
# File 'ext/oci8/lob.c', line 1019
static VALUE oci8_bfile_set_dir_alias(VALUE self, VALUE dir_alias)
{
VALUE filename;
OCI8SafeStringValue(dir_alias);
oci8_bfile_get_name(self, NULL, &filename);
oci8_bfile_set_name(self, dir_alias, filename);
rb_ivar_set(self, id_dir_alias, dir_alias);
return dir_alias;
}
|
#exists? ⇒ Boolean
1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 |
# File 'ext/oci8/lob.c', line 1053
static VALUE oci8_bfile_exists_p(VALUE self)
{
oci8_lob_t *lob = TO_LOB(self);
oci8_svcctx_t *svcctx = check_svcctx(lob);
boolean flag;
chker2(OCILobFileExists_nb(svcctx, svcctx->base.hp.svc, oci8_errhp, lob->base.hp.lob, &flag),
&svcctx->base);
return flag ? Qtrue : Qfalse;
}
|
#filename ⇒ String
1004 1005 1006 1007 1008 1009 1010 |
# File 'ext/oci8/lob.c', line 1004
static VALUE oci8_bfile_get_filename(VALUE self)
{
VALUE filename;
oci8_bfile_get_name(self, NULL, &filename);
return filename;
}
|
#filename=(filename) ⇒ Object
1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 |
# File 'ext/oci8/lob.c', line 1037
static VALUE oci8_bfile_set_filename(VALUE self, VALUE filename)
{
VALUE dir_alias;
OCI8SafeStringValue(filename);
oci8_bfile_get_name(self, &dir_alias, NULL);
oci8_bfile_set_name(self, dir_alias, filename);
rb_ivar_set(self, id_filename, filename);
return filename;
}
|
#size=(dummy) ⇒ Object
Raises RuntimeError
always.
1069 1070 1071 1072 |
# File 'ext/oci8/lob.c', line 1069
static VALUE oci8_bfile_error(VALUE self, VALUE dummy)
{
rb_raise(rb_eRuntimeError, "cannot modify a read-only BFILE object");
}
|
#truncate(dummy) ⇒ Object
Raises RuntimeError
always.
1069 1070 1071 1072 |
# File 'ext/oci8/lob.c', line 1069
static VALUE oci8_bfile_error(VALUE self, VALUE dummy)
{
rb_raise(rb_eRuntimeError, "cannot modify a read-only BFILE object");
}
|
#write(dummy) ⇒ Object
Raises RuntimeError
always.
1069 1070 1071 1072 |
# File 'ext/oci8/lob.c', line 1069
static VALUE oci8_bfile_error(VALUE self, VALUE dummy)
{
rb_raise(rb_eRuntimeError, "cannot modify a read-only BFILE object");
}
|