From 9eb6f1d63e1eb234bec9c0377c5dc8e84c16d78b Mon Sep 17 00:00:00 2001 From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com> Date: Wed, 21 Aug 2024 09:05:00 -0300 Subject: [PATCH 1/3] Fix rideshare example directories in Makefile --- Makefile.examples | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.examples b/Makefile.examples index 855a003530..d51d00d00c 100644 --- a/Makefile.examples +++ b/Makefile.examples @@ -16,20 +16,20 @@ rideshare/docker/push-loadgen: .PHONY: rideshare/docker/push-python rideshare/docker/push-python: - docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-python -t $(IMAGE_PREFIX)pyroscope-rideshare-python:$(IMAGE_TAG) examples/python/rideshare/flask + docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-python -t $(IMAGE_PREFIX)pyroscope-rideshare-python:$(IMAGE_TAG) examples/language-sdk-instrumentation/python/rideshare/flask .PHONY: rideshare/docker/push-ruby rideshare/docker/push-ruby: - docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-ruby -t $(IMAGE_PREFIX)pyroscope-rideshare-ruby:$(IMAGE_TAG) examples/ruby/rideshare_rails + docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-ruby -t $(IMAGE_PREFIX)pyroscope-rideshare-ruby:$(IMAGE_TAG) examples/language-sdk-instrumentation/ruby/rideshare_rails .PHONY: rideshare/docker/push-dotnet rideshare/docker/push-dotnet: - docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-dotnet -t $(IMAGE_PREFIX)pyroscope-rideshare-dotnet:$(IMAGE_TAG) examples/dotnet/rideshare/ + docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-dotnet -t $(IMAGE_PREFIX)pyroscope-rideshare-dotnet:$(IMAGE_TAG) examples/language-sdk-instrumentation/dotnet/rideshare/ .PHONY: rideshare/docker/push-java rideshare/docker/push-java: - docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-java -t $(IMAGE_PREFIX)pyroscope-rideshare-java:$(IMAGE_TAG) examples/java/rideshare + docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-java -t $(IMAGE_PREFIX)pyroscope-rideshare-java:$(IMAGE_TAG) examples/language-sdk-instrumentation/java/rideshare .PHONY: rideshare/docker/push-rust rideshare/docker/push-rust: - docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-rust -t $(IMAGE_PREFIX)pyroscope-rideshare-rust:$(IMAGE_TAG) examples/rust/rideshare + docker buildx build --push --platform $(IMAGE_PLATFORM) -t $(IMAGE_PREFIX)pyroscope-rideshare-rust -t $(IMAGE_PREFIX)pyroscope-rideshare-rust:$(IMAGE_TAG) examples/language-sdk-instrumentation/rust/rideshare From 87611cb175961bec0e9659035db9ef42a6c389b2 Mon Sep 17 00:00:00 2001 From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com> Date: Wed, 21 Aug 2024 09:05:29 -0300 Subject: [PATCH 2/3] Fix error in ruby docker build --- .../language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile b/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile index fc7f2f9aca..02df0c03c5 100644 --- a/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile @@ -14,7 +14,6 @@ RUN bundle config --global frozen 1 RUN bundle install --without development test COPY app /usr/src/app/app -COPY bin /usr/src/app/bin COPY config /usr/src/app/config COPY public /usr/src/app/public From 55c0acbef919dbd9860c03e2ad22038cb14268cf Mon Sep 17 00:00:00 2001 From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com> Date: Wed, 21 Aug 2024 09:27:04 -0300 Subject: [PATCH 3/3] Restore bin folder in rideshare Ruby example --- .gitignore | 1 - .../ruby/rideshare_rails/Dockerfile | 1 + .../ruby/rideshare_rails/bin/bundle | 114 ++++++++++++++++++ .../ruby/rideshare_rails/bin/rails | 4 + .../ruby/rideshare_rails/bin/rake | 4 + .../ruby/rideshare_rails/bin/setup | 33 +++++ 6 files changed, 156 insertions(+), 1 deletion(-) create mode 100755 examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/bundle create mode 100755 examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rails create mode 100755 examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rake create mode 100755 examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/setup diff --git a/.gitignore b/.gitignore index 6ca9a4b5b1..47656aeb83 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # Binaries for programs and plugins -bin /phlare /pyroscope /profilecli diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile b/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile index 02df0c03c5..fc7f2f9aca 100644 --- a/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/Dockerfile @@ -14,6 +14,7 @@ RUN bundle config --global frozen 1 RUN bundle install --without development test COPY app /usr/src/app/app +COPY bin /usr/src/app/bin COPY config /usr/src/app/config COPY public /usr/src/app/public diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/bundle b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/bundle new file mode 100755 index 0000000000..5b593cb62d --- /dev/null +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/bundle @@ -0,0 +1,114 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../../Gemfile", __FILE__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_requirement + @bundler_requirement ||= + env_var_version || cli_arg_version || + bundler_requirement_for(lockfile_version) + end + + def bundler_requirement_for(version) + return "#{Gem::Requirement.default}.a" unless version + + bundler_gem_version = Gem::Version.new(version) + + requirement = bundler_gem_version.approximate_recommendation + + return requirement unless Gem.rubygems_version < Gem::Version.new("2.7.0") + + requirement += ".a" if bundler_gem_version.prerelease? + + requirement + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + activate_bundler + end + + def activate_bundler + gem_error = activation_error_handling do + gem "bundler", bundler_requirement + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rails b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rails new file mode 100755 index 0000000000..efc0377492 --- /dev/null +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path("../config/application", __dir__) +require_relative "../config/boot" +require "rails/commands" diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rake b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rake new file mode 100755 index 0000000000..4fbf10b960 --- /dev/null +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative "../config/boot" +require "rake" +Rake.application.run diff --git a/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/setup b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/setup new file mode 100755 index 0000000000..ec47b79b3b --- /dev/null +++ b/examples/language-sdk-instrumentation/ruby/rideshare_rails/bin/setup @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby +require "fileutils" + +# path to your application root. +APP_ROOT = File.expand_path("..", __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +FileUtils.chdir APP_ROOT do + # This script is a way to set up or update your development environment automatically. + # This script is idempotent, so that you can run it at any time and get an expectable outcome. + # Add necessary setup steps to this file. + + puts "== Installing dependencies ==" + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # FileUtils.cp "config/database.yml.sample", "config/database.yml" + # end + + puts "\n== Preparing database ==" + system! "bin/rails db:prepare" + + puts "\n== Removing old logs and tempfiles ==" + system! "bin/rails log:clear tmp:clear" + + puts "\n== Restarting application server ==" + system! "bin/rails restart" +end